FPGA_实验小项目:四位运算小计算器

本文介绍了在FPGA培训中实现四位运算小计算器的过程,包括7段数码管显示、4*4键盘扫描、算术逻辑运算、数制转换及运算状态机等模块。计算器能进行4位整数及两位小数的加减乘除运算。讨论了码制转换的bin2BCD和BCD2bin模块,以及移位法在BCD到二进制转化中的应用。
摘要由CSDN通过智能技术生成

     最近在武汉参加至芯科技的FPGA培训,经过了第一周的强化基础培训,我们掌握了分频模块的书写,以及按键消抖的书写,还有就是边沿检测的方法,当然按键消抖模块我们这里用到的是通过移位打拍然后相或的方法,达到了消抖的目的,不过运用过程中这种方法也会遇到一些BUG,比如时间过短的问题,所以我计划是好要学习一下按键消抖的状态机的实现方法,除了这些还有7段数码管的显示驱动的编写,状态机与TB文件的编写,常用加法期间_74ls161的驱动等等。。。这里就不赘述了 ,当然还有另外一个实验,数字钟的实现的实验,这个实验会在另外一篇随笔中详述。

  现在开始今天这次四位运算小计算器的实现,设计之前首先得明确要实现的功能,以及按照老师所说,自顶向下的设计思路,首先要明确顶层模块需要有哪些输入以及输出,然后顶层以下有哪些模块构建。

 首先明确四则运算模块的实现需要哪些子模块构成:

    1. 7段数码管显示模块    2.  4*4键盘码扫描分析电路    3.  算数逻辑运算模块   4. 数制转换模块: 涉及BCD转bin   bin转BCD   5. 运算操作状态机的书写

首先是7段数码管显示模块的书写,这一任务在第一周的培训中已经讲解,并已经写出,参考我原来写的7段数码管显示原理的介绍。

其中在计算模块时要先对码制进行转换,计算器只能对二进制码进行运算,而显示的时候要显示BCD码,所以要对其进行转换,就要编写bin2BCD 和BCD2bin模块。

此次设计的计算器可实现的功能有:  可以实现4位以内的加减乘除,以及固定两位小数的运算。

矩阵键盘与数码管显示模块已经写出,现在主要说一下操作输入输出控制这一模块。

因为要考虑小数的计算,所以对应的要显示小数点的标志位。

第一个操作数显示,操作符显示,第二个操作数显示,以及连续运算模块。

module key2bcd1 (clk, 
              rst_n, 
              real_number, 
              opcode, 
              BCDa, 
              BCDb, 
              result ,
                  iKey); 
    
    input [4:0] real_number;
    input rst_n,clk;
   input  iKey;// 小数点控制位
    input [24:0] result;
    
    output reg [24:0] BCDa,BCDb;
    output reg [3:0] opcode;
    
    reg [3:0] opcode_reg;
    reg [3:0] state;
    reg datacoming_state,datacoming_flag;
//    ,rst_dian;
    reg dian_flag;
//always @( posedge rst_dian or negedge iKey)
//    begin
//     if(rst_dian)
//        dian_flag <= 0;
//     else
//      dian_flag <= 1;   
//    end 
    
always @(posedge clk)
    if (!rst_n)
    begin
        datacoming_state <=0;
        datacoming_flag <=0;
    end
     
    else
      if (real_number!=17)    
      case(datacoming_state)
       0: begin                
                datacoming_flag <=1;
                datacoming_state <=1;
             end
       1: begin
                datacoming_flag  <=
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验一 算术逻辑单元 1. 实验目的 (1) 掌握运算器的工作原理。 (2) 验证运算器的功能 2. 实验要求 (1)基本要求 设计一个4位的算术逻辑单元,满足以下要求。 ①4位算术逻辑单元能够进行下列运算:加法、减法、加1、减1、与、或、非和传递。用3位操作码进行运算,控制方式如下表所示。 运算操作码     运   算 对标识位Z和C的影响 000 result ←A+B 影响标志位Z和C 001 result ←A+1 影响标志位Z和C 010 result ←A-B 影响标志位Z和C 011 result ←A-1 影响标志位Z和C 100 result←A and B 影响标志位Z 101 result←A or B 影响标志位Z 110 result← not B 影响标志位Z 111 result←B 不影响标志位Z和C ②设立两个标志触发器Z和C。当复位信号reset为低电平时,将这两个标志触发器清零。当运算结束后,在时钟clk的上升沿改变标志触发器Z和C的值。运算结果改变标志触发器C、Z的情况如下:加法、减法、加1、减1运算改变Z、C;与、或、非运算改变Z,C保持不变;传送操作保持Z、C不变。因此在运算结束时Z、C需要两个D触发器保持。 ③为了保存操作数A和B,设计两个4位寄存器A和B。当寄存器选择信号sel=0时,如果允许写信号write=1,则在时钟clk的上升沿将数据输入dinput送入A寄存器;当sel=1时,如果允许写信号write=1,则在时钟clk的上升沿将数据输入dinput送入B。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值