找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3260|回复: 0
打印 上一主题 下一主题
收起左侧

基于FPGA的加减法计数器的系统设计

[复制链接]
跳转到指定楼层
楼主
原理
1.  计时器
24 小时计时器的电路框图如图 8.1 所示。
24 小时计时器由 2 个 60 进制加计数器和 1 个 24 进制加计数器构成,输入 CLK 为 1Hz (秒)的时钟,经过60 进制加计数后产生 1 分钟的进位时钟信号,再经过 60 进制加计数后产生 1 小时的进位时钟信号送给 24 进制加计数器进行加计数,当加计数到达 23:59:59 后, 再来一个秒脉冲,产生时的进位输出。将两个 60 进制加计数器和一个 24 进制加计数器的输 出送数码管显示,得到计时器的显示结果。其中,秒脉冲由 EDA 实训仪上的 20MHz 晶振分 频得到。
2.  倒计时器
24 小时倒计时器的电路框图如图 8.2 所示。
24 小时倒计时器由 2 个 60 进制减计数器和 1 个 24 进制减计数器构成,输入 CLK 为 1Hz (秒)的时钟,经过60 进制减计数后产生 1 分钟的借位时钟信号,再经过 60 进制减计数后产生 1 小时的借位时钟信号送给 24 进制减计数器进行减计数,当减计数到达 00:00:00 后, 产生时的借位输出,同时 24 小时倒计时器停止倒计时,并发出提醒信号。将两个 60 进制减 计数器和一个 24 进制减计数器的输出送数码管显示,得到 倒计时的显示结果。其中,秒脉冲 由 EDA实训仪上的 20MHz 晶振分频得到。
三、实验设备
①    EDA 实训仪  1 台。
②    计算机  1 台(装有  Quartus II 软件)。
四、实验内容
1.  计时器
在 Quartus II 软件中,按照实验原理中 24 小时计时器的电路框图,用 Verilog HDL 编程 设计计时器电路,然后进行编辑、编译(综合)、仿真,引脚的锁定,并下载到 EDA 实训仪 中进行验证。
注: 用 EDA 实训仪上的 20MHz 晶振作为计时器的时钟输入端,按键 S8~S6 分别作为计 时器的校时、校分、校秒输入端,拨动开关 S0 作为计时器的清零输入端,拨动开关 S1 作为 计时器的暂停输入端,用数码管 SEG5~SEG0 分别作为时、分、秒的输出端,用发光二极管 L0 作为进位输出端 COUT。
2.  倒计时器
在  Quartus II 软件中,按照实验原理中  24 小时倒计时器的电路框图,用 Verilog HDL 编
程设计倒计时器电路,然后进行编辑、编译(综合)、仿真,引脚的锁定,并下载到 EDA 实 训仪中进行验证。
注: 用 EDA 实训仪上的 20MHz 晶振作为倒计时器的时钟输入端,按键 S8~S6 分别作为 倒计时器的校时、校分、校秒输入端,拨动开关 S0 作为倒计时器的复位输入端,拨动开关 S1 作为倒计时器的暂停输入端,用数码管 SEG5~SEG0 分别作为时、分、秒的输出端,用发光二极管 L0 作为借位输出端 COUT。
五、实验预习要求
①    复习理论课本有关计数器及分频器的内容,并认真阅读实验指导书,分析、掌握实验原理,熟悉理论课本中  QuartusII  软件的使用方法。
②    按照实验内容的要求,编写相应的实验程序和画出相应的顶层电路连线图,写出相应的实验步骤。
60
进制加减法计数器
  1. module  cnt60(q,cout,clk,clrn,en,sel,j);
  2. input        clk,clrn,en,sel,j;
  3. output  reg[7:0]     q;
  4. output  reg       cout;
  5. always  @(posedge clk^j or negedge clrn)
  6.   begin
  7.        if(~clrn)   q=0;           //清0
  8.                  else if(en)               //使能
  9.                  begin
  10.                  if(sel)                   //加减(加)
  11.                  begin
  12.                     if(q=='h59) q=0;
  13.                          else q=q+1;
  14.                            if(q[3:0]=='ha) begin
  15.                    q[3:0]=0; q[7:4]=q[7:4]+1; end
  16.                           if(q=='h59)   cout=1;
  17.                                                  else cout=0;
  18.                 end
  19.                
  20.                 else                      //加减(减)
  21.                 begin
  22.                  if(q[3:0])                        
  23.                         q[3:0]=q[3:0]-1;                        
  24.                         else if(q[3:0]==0)
  25.                         begin
  26.                                 if(q[7:4]!=0)
  27.                                 begin
  28.                                         q[3:0]='h9;
  29.                                         q[7:4]=q[7:4]-1;
  30.                                 end
  31.                                 else                 //00
  32.                                 begin
  33.                                         cout=cout-1;
  34.                                         q='h59;
  35.                                 end        
  36.                    end
  37.      end
  38.          end                        
  39. end
  40. endmodule
复制代码

24
进制加减法计数器
  1. module  cent24(q,cout,clk,clrn,en,sel,j);
  2. input        clk,clrn,en,sel,j;
  3. output  reg[7:0]     q;
  4. output  reg       cout;
  5. always  @(posedge clk^j or negedge clrn)
  6.   begin
  7.        if(~clrn)   q=0;           //清0
  8.                  else if(en)               //使能
  9.                  begin
  10.                  if(sel)                   //加减(加)
  11.                  begin
  12.                     if(q=='h23) q=0;
  13.                          else q=q+1;
  14.                            if(q[3:0]=='ha) begin
  15.                    q[3:0]=0; q[7:4]=q[7:4]+1; end
  16.                           if(q=='h23)   cout=1;
  17.                                                  else cout=0;
  18.                 end
  19.                
  20.                 else                      //加减(减)
  21.                 begin
  22.                  if(q[3:0])                        
  23.                         q[3:0]=q[3:0]-1;                        
  24.                         else if(q[3:0]==0)
  25.                         begin
  26.                                 if(q[7:4]!=0)
  27.                                 begin
  28.                                         q[3:0]='h9;
  29.                                         q[7:4]=q[7:4]-1;
  30.                                 end
  31.                                 else                 //00
  32.                                 begin
  33.                                         cout=cout-1;
  34.                                         q='h23;
  35.                                 end        
  36.                    end
  37.      end
  38.          end                        
  39. end
  40. endmodule
复制代码


图8.5 仿真电路图
引脚锁定


clk        Input        PIN_132        3        B3_N0        PIN_132        3.3-V LVTTL (default)                24mA (default)        
clrn        Input        PIN_8        1        B1_N0        PIN_8        3.3-V LVTTL (default)                24mA (default)        
cout        Output        PIN_115        3        B3_N1        PIN_115        3.3-V LVTTL (default)                24mA (default)        
en        Input        PIN_10        1        B1_N0        PIN_10        3.3-V LVTTL (default)                24mA (default)        
jf        Input        PIN_13        1        B1_N0        PIN_13        3.3-V LVTTL (default)                24mA (default)        
jm        Input        PIN_12        1        B1_N0        PIN_12        3.3-V LVTTL (default)                24mA (default)        
js        Input        PIN_14        1        B1_N0        PIN_14        3.3-V LVTTL (default)                24mA (default)        
qf[7]        Output        PIN_99        4        B4_N0        PIN_99        3.3-V LVTTL (default)                24mA (default)        
qf[6]        Output        PIN_97        4        B4_N0        PIN_97        3.3-V LVTTL (default)                24mA (default)        
qf[5]        Output        PIN_96        4        B4_N0        PIN_96        3.3-V LVTTL (default)                24mA (default)        
qf[4]        Output        PIN_95        4        B4_N0        PIN_95        3.3-V LVTTL (default)                24mA (default)        
qf[3]        Output        PIN_94        4        B4_N0        PIN_94        3.3-V LVTTL (default)                24mA (default)        
qf[2]        Output        PIN_92        4        B4_N0        PIN_92        3.3-V LVTTL (default)                24mA (default)        
qf[1]        Output        PIN_59        4        B4_N1        PIN_59        3.3-V LVTTL (default)                24mA (default)        
qf[0]        Output        PIN_58        4        B4_N1        PIN_58        3.3-V LVTTL (default)                24mA (default)        
qm[7]        Output        PIN_57        4        B4_N1        PIN_57        3.3-V LVTTL (default)                24mA (default)        
qm[6]        Output        PIN_56        4        B4_N1        PIN_56        3.3-V LVTTL (default)                24mA (default)        
qm[5]        Output        PIN_48        1        B1_N1        PIN_48        3.3-V LVTTL (default)                24mA (default)        
qm[4]        Output        PIN_47        1        B1_N1        PIN_47        3.3-V LVTTL (default)                24mA (default)        
qm[3]        Output        PIN_46        1        B1_N1        PIN_46        3.3-V LVTTL (default)                24mA (default)        
qm[2]        Output        PIN_45        1        B1_N1        PIN_45        3.3-V LVTTL (default)                24mA (default)        
qm[1]        Output        PIN_44        1        B1_N1        PIN_44        3.3-V LVTTL (default)                24mA (default)        
qm[0]        Output        PIN_43        1        B1_N1        PIN_43        3.3-V LVTTL (default)                24mA (default)        
qs[7]        Output        PIN_114        3        B3_N1        PIN_114        3.3-V LVTTL (default)                24mA (default)        
qs[6]        Output        PIN_113        3        B3_N1        PIN_113        3.3-V LVTTL (default)                24mA (default)        
qs[5]        Output        PIN_112        3        B3_N1        PIN_112        3.3-V LVTTL (default)                24mA (default)        
qs[4]        Output        PIN_110        3        B3_N1        PIN_110        3.3-V LVTTL (default)                24mA (default)        
qs[3]        Output        PIN_104        4        B4_N0        PIN_104        3.3-V LVTTL (default)                24mA (default)        
qs[2]        Output        PIN_103        4        B4_N0        PIN_103        3.3-V LVTTL (default)                24mA (default)        
qs[1]        Output        PIN_102        4        B4_N0        PIN_102        3.3-V LVTTL (default)                24mA (default)        
qs[0]        Output        PIN_101        4        B4_N0        PIN_101        3.3-V LVTTL (default)                24mA (default)        
sel        Input        PIN_11        1        B1_N0        PIN_11        3.3-V LVTTL (default)                24mA (default)
        

cnt.png (24.76 KB, 下载次数: 113)

仿真电路图

仿真电路图

cnt.rar

5.62 MB, 下载次数: 24, 下载积分: 黑币 -5

项目文件

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表