目录

3.2.2.1 Four-bit binary counter(Count15)

3.2.2.2 Decade counter(Count10)

3.2.2.3 Decade counter again(Count1to10)

3.2.2.4 Show decade counter(Countslow)

3.2.2.5 Counter 1-12(Exams/ece241 2014 q7a)

3.2.2.6 Counter 1000(Exams/ece241 2014 q7b)

3.2.2.7 4-digit decimal counter(Countbcd)

3.2.2.8 12-hour clock(Count clock)


3.2.2.1 Four-bit binary counter(Count15)

module top_module (input clk,input reset,      // Synchronous active-high resetoutput reg [3:0] q);always @(posedge clk)beginif(reset == 1)beginq <= 4'b0;endelse beginq <= q + 1'b1; endendendmodule

3.2.2.2 Decade counter(Count10)

module top_module (input clk,input reset,        // Synchronous active-high resetoutput reg [3:0] q);always @(posedge clk)beginif(reset == 1)beginq <= 4'b0;endelse if(q == 9)beginq <= 4'b0; endelse beginq <= q + 1'b1; endend
endmodule

3.2.2.3 Decade counter again(Count1to10)

module top_module (input clk,input reset,output [3:0] q);always @(posedge clk)beginif(reset)beginq <= 4'b1;endelse if(q == 10)beginq <= 4'b1;endelse beginq <= q + 1'b1;end     endendmodule

3.2.2.4 Show decade counter(Countslow)

module top_module (input clk,input slowena,input reset,output reg [3:0] q);always @(posedge clk)beginif(reset)beginq <= 4'b0;endelse if(slowena)beginif(q == 4'd9)beginq <= 4'b0;endelse beginq <= q + 1'b1; endendendendmodule

3.2.2.5 Counter 1-12(Exams/ece241 2014 q7a)

module top_module (input clk,input reset,input enable,output [3:0] Q,output c_enable,output c_load,output [3:0] c_d
); //assign c_enable = enable;assign c_load = reset | ((Q == 4'd12) && enable == 1);assign c_d = c_load ? 4'b1 : 4'b0;count4 the_counter (clk, c_enable, c_load, c_d, Q);endmodule

3.2.2.6 Counter 1000(Exams/ece241 2014 q7b)

module top_module (input clk,input reset,output OneHertz,output [2:0] c_enable
); //wire [3:0] q0, q1, q2;assign c_enable ={((q1==4'd9) & (q0==4'd9)), (q0==4'd9), 1'b1};bcdcount counter0 (clk, reset, c_enable[0], q0);bcdcount counter1 (clk, reset, c_enable[1], q1);bcdcount counter2 (clk, reset, c_enable[2], q2);assign OneHertz = ((q2==4'd9) & (q1==4'd9) & (q0==4'd9));endmodule

3.2.2.7 4-digit decimal counter(Countbcd)

module top_module (input clk,input reset,   // Synchronous active-high resetoutput [3:1] ena,output [15:0] q);//申明低位到高位的寄存器,用作各个BCD计数器reg [3:0] cnt_0, cnt_1, cnt_2, cnt_3;//cnt_0计数器,个位always @(posedge clk)beginif(reset)begincnt_0 <= 4'b0;endelse if(cnt_0 == 4'd9)begincnt_0 <= 4'b0;endelse begincnt_0 <= cnt_0 + 1'b1; endend//cnt_1计数器,十位always @(posedge clk)beginif(reset)begincnt_1 <= 4'b0;endelse if(cnt_0 == 4'd9)beginif(cnt_1 == 4'd9)begincnt_1 <= 4'b0;endelse begincnt_1 <= cnt_1 + 1'b1; endendend//cnt_2计数器,百位always @(posedge clk)beginif(reset)begincnt_2 <= 4'b0;endelse if((cnt_1 == 4'd9) & (cnt_0 == 4'd9))beginif(cnt_2 == 4'd9)begincnt_2 <= 4'b0;endelse begincnt_2 <= cnt_2 + 1'b1; endendend//cnt_3计数器,千位always @(posedge clk)beginif(reset)begincnt_3 <= 4'b0;endelse if((cnt_2 == 4'd9) & (cnt_1 == 4'd9) & (cnt_0 == 4'd9))beginif(cnt_3 == 4'd9)begincnt_3 <= 4'b0;endelse begincnt_3 <= cnt_3 + 1'b1; endendend//物理连线assign q = {cnt_3, cnt_2, cnt_1, cnt_0};assign ena = {(cnt_2 == 4'd9)&(cnt_1 == 4'd9)&(cnt_0 == 4'd9), (cnt_1 == 4'd9)&(cnt_0 == 4'd9), (cnt_0 == 4'd9)};endmodule

3.2.2.8 12-hour clock(Count clock)


//时钟设计,分为时(01~12)、分(00~59)、秒(00~59)
module top_module(input clk,                    //上升沿检测input reset,             //同步复位,因此需要放在always块里面input ena,                 //ena为高电平才能进行时间加减output reg pm,             //pm   0-am  1-pm  当hh-mm-ss:11-59-59时,pm由0变到1output reg [7:0] hh,output reg [7:0] mm,output reg [7:0] ss); //sec设计 ss范围为00~59,此处的一秒为一个clk周期//不能把ss的8位直接拿来作为一个整体寄存器,否则12会输出为c//因此需要把这三个8位寄存器都分为2个4位的BCD计数器always @(posedge clk)beginif(reset)begin                //reset复位信号ss <= 8'b0;endelse if(ena)beginif((ss[7:4] == 4'd5) & (ss[3:0] == 4'd9))begin //当ss到59后下一个clk归0ss <= 8'b0;endelse begin              //需要考虑其中的两位BCD详细情况if(ss[3:0] == 4'd9)begin   //当ss的个位达到9需要归零,且ss的十位加1ss[3:0] <= 4'b0;ss[7:4] <= ss[7:4] + 1'b1;endelse beginss[3:0] <= ss[3:0] + 1'b1;endendendend//min设计 mm范围为00~59, clk的目的就是为了给mm归0always @(posedge clk)beginif(reset)begin               //reset复位信号 mm <= 8'b0;endelse if(ena & (ss[7:4] == 4'd5) & (ss[3:0] == 4'd9))begin  //当ena与ss达到59秒后,才可以后面操作加一if((mm[7:4] == 5) & (mm[3:0] == 9))beginmm <= 8'b0;endelse beginif(mm[3:0] == 4'd9)begin        //当mm的个位达到9需要归零,且mm的十位加1mm[3:0] <= 4'b0;mm[7:4] <= mm[7:4] + 1'b1;endelse beginmm[3:0] <= mm[3:0] + 1'b1; endendendend//hour设计 hh的范围为01~12always @(posedge clk)beginif(reset)begin             //reset复位信号 hh[7:4] <= 4'd1;hh[3:0] <= 4'd2;endelse beginif(ena & ((ss[7:4] == 4'd5) & (ss[3:0] == 4'd9)) & ((mm[7:4] == 5) & (mm[3:0] == 9)))beginif((hh[7:4] == 4'd1) & hh[3:0] == 2)beginhh[7:4] <= 4'd0;hh[3:0] <= 4'd1;endelse beginif(hh[3:0] == 4'd9)beginhh[3:0] <= 4'b0;hh[7:4] <= hh[7:4] + 1'b1;endelse beginhh[3:0] <= hh[3:0] + 1'b1;endendendendend//pmalways @(posedge clk)beginif(reset)beginpm <= 1'b0;endelse if((hh[7:4] == 4'd1) & (hh[3:0] == 4'd1) &(mm[7:4] == 4'd5) & (mm[3:0] == 4'd9) &(ss[7:4] == 4'd5) & (ss[3:0] == 4'd9))beginpm <= ~pm;           //当经过了12h后,pm进行翻转操作endend
endmodule

HDLbits 刷题答案practice——Counters相关推荐

  1. 【HDLBits 刷题】所有答案直达链接汇总

    写在前面 以下为HDLBits全部答案,有些题的解法不唯一,我的也许不是最优解,欢迎提出更好的想法,HDLBits总的来说比较适合初学者. HDLBits 答案汇总 Language [HDLBits ...

  2. 牛客网Veirlog刷题答案目录(持续更新)

    牛客网Veirlog刷题答案目录(持续更新) 基础篇 进阶篇 基础篇 1.VL1--四选一多路选择器 2.VL2--异步复位的串联T触发器 3.VL3--奇偶校验 4.VL4--移位运算与乘法 5.V ...

  3. SQL leetcode 刷题答案(二)

    承接上篇 SQL leetcode 刷题答案https://blog.csdn.net/hahaha66888/article/details/89925981 5.Big Countries sel ...

  4. 【HDLBits 刷题 9】Circuits(5)Finite State Manchines 1-9

    目录 写在前面 Finite State Manchines Fsm1 Fsm1s Fsm2 Fsm2s Fsm3comb Fsm3onehot Fsm3 Fsm3s Design a Moore F ...

  5. 【HDLBits 刷题 10】Circuits(6)Finite State Manchines 10-17

    目录 写在前面 Finite State Manchines Lemmings1 Lemmings2 Lemmings3 Lemmings4 Fsm onehot Fsm ps2 Fsm ps2dat ...

  6. 【HDLBits 刷题 11】Circuits(7)Finite State Manchines 18-26

    目录 写在前面 Finite State Manchines Fsm serialdata Fsm serialdp Fsm hdlc Design a Mealy FSM ece241 2014 q ...

  7. 【HDLBits 刷题 12】Circuits(8)Finite State Manchines 27-34

    目录 写在前面 Finite State Manchines 2014 q3c m2014 q6b m2014 q6c m2014 q6 2012 q2fsm 2012 q2b 2013 q2afsm ...

  8. HDLBits刷题合集—9 Arithmetic Circuits

    HDLBits刷题合集-9 Arithmetic Circuits HDLBits-66 Hadd Problem Statement 创建一个半加器.半加器将两个输入(不带低位的进位)相加产生和和向 ...

  9. 《LeetCode刷题答案》pdf出炉,学习者乐坏了

    很多朋友在后台留言说,刷LeetCode上的数据结构+算法题时难免会遇到困难,想要找一本答案题解做参考. 其实几个月之前,咱们这里已经分享过一本<LeetCode算法题的PDF版题解>,只 ...

最新文章

  1. Visio绘制功能分解图
  2. python编程语言零基础入门-程序员大佬,给Python零基础入门书籍教程的一些建议!...
  3. 在网页中直接显示office文档,
  4. python接收邮件g_Python接收Gmail新邮件并发送到gtalk的方法
  5. Mysql定时执行任务实现方法
  6. python 社区网络转化_python-将numpy打开网格转换为坐标
  7. 前端学习(2546):debugger
  8. python sklearn 梯度下降法_科学网—Python_机器学习_总结4:随机梯度下降算法 - 李军的博文...
  9. 疫情相关电信诈骗涉案金额超3.51亿元,谨防这四类骗局!
  10. mysql学习day04
  11. 【mfc】vs2019创建MFC基于对话框的项目没有插入任何代码运行报错:0xC0000005:读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突
  12. Mac 升级到protoc 指定版本
  13. 卸载精灵(bue directx) r4.0 完美版 绿色
  14. Linux 对命令起别名
  15. 如何优雅的将Mybatis日志中的Preparing与Parameters转换为可执行SQL
  16. ubuntu使用meld/beyond compare 做git的diff工具
  17. ARduino接KY-040电位编码器
  18. 华为nova5 pro怎么升级鸿蒙系统,鸿蒙系统终于来了!这几款华为手机都可以升级了...
  19. 中国石油大学《化工原理一》第一阶段在线作业
  20. AI如何让视频更智能?人工智能技术在视频监控中的应用

热门文章

  1. python电影推荐系统 github_GitHub - Holy-Shine/movie_recommend_system: 一个简单的电影推荐系统...
  2. android拍照滤镜代码,Android OpenGLES如何给相机添加滤镜详解
  3. 资深程序员解惑:Android发行多年移动App趋近饱和,Android开发还有好的前景吗?能者居之!
  4. 机器人开发--扫地机器人系统的解决方案
  5. 深度学习应用篇-计算机视觉-语义分割综述[5]:FCN、SegNet、Deeplab等分割算法、常用二维三维半立体数据集汇总、前景展望等
  6. 美团外卖商家版多开工具
  7. 螺丝头部及其相关知识点
  8. linux 网络带宽和延时测试
  9. 电力线巡检--输电线路杆塔异物检测数据集(4500+图片,xml标注)
  10. 【求资源】Hadoop-native 3.3.1