模24的8421BCD码计数器(Verilog HDL语言描述)(仿真与综合)
目录
前言
原理
Verilog HDL程序设计
测试代码
仿真波形图
ISE综合后
RTL Schematic
Technology Schematic
前言
本博文用Verilog HDL语言描述模24的8421BCD码计数器,之后用Modelsim进行功能仿真,然后用ISE进行综合,看看综合出来的RTL级电路以及Technology Schematic是什么样子的,对于RTL Schematic 以及 Technology Schematic可能比较复杂,暂时可能看不懂,但混个眼熟吧。重点是设计思路以及波形图是否正确,后面例如设计一个时钟计数器,这个模24的计数器就可以当成一个模块来直接使用。本博文的目的实际上也是为了时钟计数器做准备,后面的博文会用到这个模块。
原理
计数原理很简单,rst_n为异步复位信号,当时钟上升沿或复位下降沿到来时,如果rst_n有效,则计数器清零(0000 0000)。计数器的计数过程为,当输出信号的低4位从0(0000)计数到9(1001)后,高4位计数加1,当计数到23(0010 0011)时,计数器重新清零,然后重新开始计数。
Verilog HDL程序设计
//8421BCD码计数器,模24
module bcd_counter(clk, rst_n, en, dout);input clk, rst_n, en;
output[7:0] dout;
reg[7:0] dout;always@(posedge clk or negedge rst_n) //异步复位
beginif(!rst_n) //复位信号有效时,输出清零dout <= 8'b00000000;else if(en == 1'b0) //计数使能无效时,输出不变dout <= dout;else if( (dout[7:4] == 4'b0010)&&(dout[3:0] == 4'b0011) ) //计数达到23时,输出清零dout <= 8'b00000000;else if(dout[3:0] == 4'b1001) //低位达到9时,低位清零,高位加1begindout[3:0] <= 4'b0000;dout[7:4] <= dout[7:4] + 1'b1;endelse //上述情况都没有发生,则高位不变,低位加1begindout[7:4] <= dout[7:4];dout[3:0] <= dout[3:0] + 1'b1;endendendmodule
测试代码
//模24,8421BCD码计数器的测试文件
`timescale 1ns/1ps
module bcd_counter_tb;reg clk, rst_n, en;
wire[7:0] dout;//时钟信号,周期为20ns
always
begin#10 clk = ~clk;
end//初始化
initial
beginclk = 1'b0;rst_n = 1'b0;en = 1'b0;#30 rst_n = 1'b1; en = 1'b1;
endbcd_counter u1(.clk(clk), .rst_n(rst_n), .en(en), .dout(dout));
endmodule
仿真波形图
可见,计数到23后计数器就自动清零了,满足设计要求。
ISE综合后
RTL Schematic
展开后
没办法,再放大就看不全了,需要看仔细的,自己用ISE综合一下就好了。
Technology Schematic
用了一些LUT资源和D触发器资源以及各种BUF资源。
最后附上同一系列的博文:
模6计数器以及模10计数器(Verilog HDL语言设计)(Modelsim仿真与ISE综合)
级联模60计数器
模24的8421BCD码计数器(Verilog HDL语言描述)(仿真与综合)相关推荐
- 级联模60计数器(Verilog HDL语言描述)(仿真与综合)
目录 前言 模60计数器 Verilog HDL语言描述 测试文件 仿真波形 RTL Schematic Technology Schematic 前言 看这篇文章前,推荐先看看模10计数器和模6计数 ...
- 数字时钟计数器(Verilog HDL语言描述)(仿真和综合)
目录 前言 主题 Verilog HDL设计代码 测试代码 仿真波形 ISE中综合 RTL Schematic Technology Schematic 前言 数字时钟计数器和我的前一篇博文:级联模6 ...
- 有限状态机设计实例之空调控制器(Verilog HDL语言描述)(仿真与综合)(附用Edraw(亿图)画状态转移图)
目录 前言 空调控制器 简介 状态转移图如下: Verilog HDL语言描述 测试文件 仿真图 ISE综合 RTL Schematic Technology Schematic 前言 关于工具的使用 ...
- 通过仿真和综合认识T触发器(Verilog HDL语言描述T触发器)
这个系列的博文已经写过了两篇,分别是通过仿真和综合认识D触发器(Verilog HDL语言描述D触发器)和通过仿真和综合认识JK触发器(Verilog HDL语言描述JK触发器),分析的方法是完全并行 ...
- 通过仿真和综合认识JK触发器(Verilog HDL语言描述JK触发器)
上篇博文写了用仿真和综合来认识D触发器(通过仿真和综合认识D触发器(Verilog HDL语言描述D触发器)),这篇博文采用完全并行的方式来认识JK触发器. 让我们迅速进入正题吧. J-K触发器的Ve ...
- 计数器——Verilog HDL语言
计数器 任务要求 相关知识 逻辑原理 同步16进制计数器真值表 编程要求 源代码 任务要求 根据所学的时序逻辑及数字电路的知识完成计数器的设计,验证同步16进制计数器的功能,进一步熟悉 Verilog ...
- 通过仿真和综合认识D触发器(Verilog HDL语言描述D触发器)
目录 前言 硬件语言描述 测试文件 仿真图 综合工具综合后的原理图 综合介绍D触发器 维基百科介绍: 其他来源(课本): 8位的D触发器 Verilog HDL程序设计 测试文件: 仿真波形: 综合工 ...
- 数字时钟计数器(内含模60计数器以及8421BCD码计数器设计代码)
目录 前言 模60计数器 verilog设计代码如下: ISE综合 模24的8421BCD码计数器 原理 verilog HDL代码 测试文件 仿真波形 数字时钟计数器 verilog HDL代码 测 ...
- 模6计数器以及模10计数器(Verilog HDL语言设计)(Modelsim仿真与ISE综合)
目录 前言 模6计数器 Verilog HDL语言描述 测试文件 仿真电路图 RTL Schematic Technology Schematic 模10计数器 Verilog HDL语言描述 测试文 ...
最新文章
- 科普:String hashCode 方法为什么选择数字31作为乘子
- Java程序员如何运用所掌握的技术构建一个完整的业务架构
- 正則表達式基本元字符集及其含义(上)
- linux18.04下安装的jdk11.0.2
- pandas - 案例(股票分析)
- 538. Convert BST to Greater Tree 把二叉搜索树转换为累加树
- 港航环境变化引起的错误解决方法
- php无限评论回复_php实现无限级评论功能_后端开发
- LeetCode算法入门- Longest Valid Parentheses -day12
- jssdk更新日志_关于jssdk版本的阿里云网站内容、产品介绍、帮助文档、论坛交流和云市场相关问题...
- html模态窗口调试,在模态窗口中显示HTML标记
- Ansible自动化运维笔记3(playbook)
- Linux下Apache、PHP、MySQL默认安装路径
- 微信聊天记录云存储服务如何收费
- 2017年6月英语 CET 四六级考试查询准考证方法
- easyui treegrid php,easyUI TreeGrid | 学步园
- 重积分 | 二重积分中 dx x dy = ρ dρ x dθ
- 2022跨年烟花代码(一)Canvas绘制3D烟花动画特效
- read( )函数注意事项与不足
- 安装 Jupyter 开发工具