位置: IT常识 - 正文

【HDLBits刷题笔记】10 Counters(最好用的刷题笔)

编辑:rootadmin
Count15 module top_module ( input clk, input reset, // Synchronous active-high reset output Count15module top_module ( input clk, input reset, // Synchronous active-high reset output [3:0] q); always@(posedge clk) begin if(reset) q <= 4'd0; else q <= q + 1'b1; endendmoduleCount10

推荐整理分享【HDLBits刷题笔记】10 Counters(最好用的刷题笔),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:刷题笔真的好用吗,刷题笔多少钱,最好用的刷题笔,刷题笔真的好用吗,刷题笔是什么,刷题笔怎么样,刷题笔是什么,刷题笔是什么,内容如对您有帮助,希望把文章链接给更多的朋友!

题目给的答案把q清零和reset放在了一个if里if (reset || q == 9)。

module top_module ( input clk, input reset, // Synchronous active-high reset output [3:0] q); always@(posedge clk) begin if(reset) q <= 4'd0; else q <= (q<9)?(q+1):0; endendmoduleCount1to10module top_module ( input clk, input reset, output [3:0] q); always@(posedge clk) begin if(reset) q <= 4'd1; else q <= (q<10)?(q+1):1; endendmoduleCountslowmodule top_module ( input clk, input slowena, input reset, output [3:0] q); always@(posedge clk) begin if(reset) q <= 4'd0; else if(slowena) q <= (q<9)?(q+1):0; endendmoduleExams/ece241 2014 q7a

这道题感觉怪怪的,一开始我写的c_load = (Q==12)|reset;由于题目说了count4模块中的load优先级比enable高,所以enable为0时仍可以置数。

【HDLBits刷题笔记】10 Counters(最好用的刷题笔)

而题目貌似是希望load和enable不能冲突,enable为0时就不应该置数了,所以此时的load应该为0,所以我又把信号与上了一个enable。

module top_module ( input clk, input reset, input enable, output [3:0] Q, output c_enable, output c_load, output [3:0] c_d); // count4 the_counter (clk, c_enable, c_load, c_d , Q ); assign c_d = 1; assign c_enable = enable; assign c_load = enable&(Q==12)|reset;endmoduleExams/ece241 2014 q7b

把三个BCD计数器级联在一起即可。一开始我写的c_enable[2]=(Q2==9);OneHertz=(Q3==9);而Q2、Q3都会持续多个周期,只有Q1是一个一直变的信号。

module top_module ( input clk, input reset, output OneHertz, output [2:0] c_enable); // wire [3:0]Q1; wire [3:0]Q2; wire [3:0]Q3; bcdcount counter0 (clk, reset, c_enable[0],Q1); bcdcount counter1 (clk, reset, c_enable[1],Q2); bcdcount counter2 (clk, reset, c_enable[2],Q3); assign c_enable[0]=1'b1; assign c_enable[1]=(Q1==9); assign c_enable[2]=(Q2==9)&&(Q1==9); assign OneHertz=(Q3==9)&&(Q2==9)&&(Q1==9);endmoduleCountbcd

感觉写的稍微有点复杂,利用了verilog里写多个if优先下面的语句的特点,实际不会对一个数重复操作。

实际例化多个BCD计数器会简单很多。

module top_module ( input clk, input reset, // Synchronous active-high reset output [3:1] ena, output [15:0] q); always@(posedge clk) begin if(reset) q <= 'd0; else begin q[3:0] <= q[3:0] + 1; if(ena[1])begin q[3:0] <= 0; q[7:4] <= q[7:4]+1; end if(ena[2])begin q[3:0] <= 0; q[7:4] <= 0; q[11:8] <= q[11:8]+1; end if(ena[3])begin q[3:0] <= 0; q[7:4] <= 0; q[11:8] <= 0; q[15:12] <= (q[15:12]<9)?q[15:12] +1:0; end end end assign ena[1] = (q[3:0]==9); assign ena[2] = (q[7:4]==9)&&ena[1]; assign ena[3] = (q[11:8]==9)&&ena[2];endmoduleCount clock

这道题稍微有点复杂,难度也不算特别大,但是需要耐心debug,把情况全部考虑清楚。

我提交了五次才通过,可恶。

module top_module( input clk, input reset, input ena, output reg pm, output reg[7:0] hh, output reg[7:0] mm, output reg[7:0] ss); always@(posedge clk) begin if(reset)begin pm <= 1'b0; hh <= {4'd1,4'd2}; mm <= 0; ss <= 0; end else if(ena)begin ss[3:0] <= ss[3:0] +1'b1; if(ss[3:0] == 9)begin ss[3:0] <= 'd0; ss[7:4] <= (ss[7:4]==5)?0:(ss[7:4]+1); end if(ss[3:0] == 9&&ss[7:4] == 5)begin if(mm[3:0]<9) mm[3:0] <= mm[3:0] + 1; else begin mm[3:0] <= 'd0; mm[7:4] <= (mm[7:4]==5)?0:(mm[7:4]+1); end end if(ss[3:0] == 9&&ss[7:4] == 5&&mm[3:0] == 9&&mm[7:4] == 5)begin if(hh[3:0]<9&&hh[7:4] == 0) hh[3:0] <= hh[3:0] + 1; else if(hh[3:0]<2&&hh[7:4] == 1) hh[3:0] <= hh[3:0] + 1; else begin if(hh[7:4] == 1) hh[3:0] <= 'd1;//注意这里是1 else hh[3:0] <= 'd0; hh[7:4] <= (hh[7:4]==1)?0:1; end end if(ss[3:0] == 9&&ss[7:4] == 5&&mm[3:0] == 9&&mm[7:4] == 5&&hh[3:0]==1&&hh[7:4]==1) pm<=~pm; end endendmodule
本文链接地址:https://www.jiuchutong.com/zhishi/313192.html 转载请保留说明!

上一篇:苹果系统专用网络优化工具,让你的网络速度暴增(一个人失恋了该怎么安慰她)

下一篇:织梦dedecms使用channelartlist标签显示当前文章高亮(织梦如何使用)

  • 设备进项税额转出会计分录
  • 合同负债属于负债吗
  • 项目差旅费能计入项目费用吗
  • 或有负债在报表附注哪里
  • 加计抵减申报表填写说明
  • 计算本月应交增值税转账公式
  • 开专票还要另外再交钱么
  • 即期外汇交易有幅度限制吗
  • 公司承租厂房装修协议
  • 存货算动产吗
  • 固定资产发票未到可以确认固定资产吗
  • 航天金税服务费怎么做账
  • 车辆租赁的增值税率
  • 企业财务月确定不当造成税务问题
  • 支付印花税计入什么科目
  • 资本公积转增实收资本所有者权益会变吗
  • 净值在财务报表哪找
  • 员工饭卡充值是哪个部门做
  • 红字负数发票可以抵扣吗
  • 企业房产税怎么申报缴纳流程
  • 管理会计完全成本法和变动成本法例题
  • 上月没交社保本人能交吗
  • 苹果14.5新功能
  • 社保买房公积金
  • 电脑网卡介绍
  • PHP:mb_regex_set_options()的用法_mbstring函数
  • ubuntu22.04更换RTX 4090显卡后,安装驱动和pytorch记录
  • 线程是什么意思
  • mac如何在桌面显示我的电脑
  • 工程结算的编制方法
  • 一般股份支付的确认计量及帐务处理怎么做
  • 若依系统怎么样
  • 流动资产占总资产比重多少较为合适
  • php判断字符串是否存在
  • html的表单怎么做
  • 命令grep
  • unzip解压命令参数
  • php微信公众号开发反回图片怎么弄的学校
  • python解密加密文件
  • linux db2安装与配置
  • mysql 测试
  • 长期待摊费用科目性质
  • 普通发票需要做合同才能开吗
  • 银行账户如何开立
  • 医疗收费票据管理制度
  • 个人独资企业需要缴纳哪些税种
  • 公司名下的车怎样领免检标志
  • 未分配利润可以弥补亏损吗
  • 专项资金的账务处理 借:银行存款 贷:其他应付款
  • 应付账款怎么处理
  • 五险一金缴纳比例2023
  • 分支机构可不可以不建账合并到总机构?
  • 个人所得税个人申报和公司申报区别
  • 企业以原有公司为主体
  • 小企业会计准则调整以前年度费用分录
  • 货物丢失账务如何处理
  • 员工社保,个税怎么计算
  • win10系统添加语言
  • linux登录提示
  • win7双声道
  • macbook qq截图存在哪
  • linux中查看文件
  • pc guide
  • win7鼠标右键菜单不显示
  • nodejs 插件开发
  • linux命令有啥用
  • linux怎么解压.gz
  • python3循环语句
  • javascript的if
  • unityc#脚本
  • jquery的实现原理
  • python3.5升级
  • android adt
  • 最简单手电筒
  • python对文件操作采用的统一
  • 银行端查询缴税凭证怎么打印
  • 国税总局网
  • 浙江宁波江北区都有哪些大学?
  • 注册税务师条件要求
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设