使用Verilog实现74LVC161计数器
最编程
2024-08-04 22:49:23
...
Verilog——74LVC161计数器
- 设计思路
- 代码实现
- 设计模块
- 测试模块
- 仿真结果
设计思路
根据功能表进行行为级建模,如下:
代码实现
设计模块
//filename:_74LVC161.v
module _74LVC161(
input CR,PE,CEP,CET,CP,
input [3:0] D,
output reg [3:0] Q,
output reg TC);
/*
参数说明:
输入:
CR位置零输入端,PE为预置,CEP,CET为控制信号,CP为时钟信号,D为预置信号
输出:
Q为输出端
TC进位信号
*/
always@(posedge CP,negedge CR)
begin
if(~CR) begin Q<=4'b0000;TC=0; end //异步清零信号的优先级最高
else if(~PE) Q<=D; //预置信号
else
casex({CEP,CET}) //使能信号
2'b0x: Q<=Q; //保持
2'bx0:begin Q<=Q; TC=0; end //保持
2'b11:begin Q=Q+1'b1; TC=(Q==4'b1111); end //计数
endcase
end
endmodule
测试模块
filename:tb_74LVC161.v
`timescale 1ns/1ns
module tb_74LVC161();
reg CR,PE,CEP,CET,CP;
reg [3:0] D;
wire [3:0] Q;
wire TC;
/*
参数说明:
输入:
CR位置零输入端,PE为预置,CEP,CET为控制信号,CP为时钟信号,D为预置信号
输出:
Q为输出端
TC进位信号
*/
always
_74LVC161 U(CR,PE,CEP,CET,CP,D,Q,TC);
initial
$monitor($time,"\tCR=%b,PE=%b,CEP=%b,CET=%b,CP=%b,D=%b,Q=%b,TC=%b",CR,PE,CEP,CET,CP,D,Q,TC);
//时钟信号
initial
CP=1;
always
#5 CP=~CP;
//元件例化
initial
begin
//清零
CR=0;PE=1;D=4'b1100;CET=0;CEP=0;
#5;
//置数
CR=1;PE=0;D=4'b1100;CET=0;CEP=0;
#10;
//计数
CR=1;PE=1;D=4'b0000;CET=1;CEP=1;
#60;
//禁止计数
CR=1;PE=1;D=4'b0000;CET=1;CEP=0;
#20;
$stop;
end
endmodule
仿真结果
推荐阅读
-
如何在Verilog中通过VCS使用VPI和PLI/DPI调用C程序来实现Cover Property驱动的仿真控制?
-
使用Verilog实现74LVC161计数器
-
使用74LS161计数器制作模10计数器并实现译码显示的Multisim仿真实验
-
使用74LS161和CD4046实现计数器与锁相环功能的探讨
-
使用Quartus进行32位仿真实现74161构成的模7计数器
-
如何使用Verilog编程进行时间计数器设计
-
使用 FPGA 及 Verilog 实现 FIR 滤波器设计指南
-
标题:一文搞定Redis面试,附Redis面试大纲+常见Redis面试题-一、基础篇 快速上手 ①. 什么是redis ②. 为什么使用redis ③. 安装 ④. 基本使用(常见数据结构的命令) Java操作redis ①. Jedis ②. SpringBoot 启动redis的方式 ①. 配置文件 ②. 生产环境启动方案 二、进阶篇 redis实现session共享 redis缓存的使用 ①. 注解式 ②. Spring Cache 数据库和缓存双写一致性问题——穿透 redis实现附近的人 redis实现计数器 redis事务 redis分布式锁的使用 redis集群 redis实现延时队列 redis实现限流 redis实现布隆过滤器 发布订阅 redis优化 三、原理篇 redis单线程为什么性能好 数据类型的底层实现 持久化机制 过期策略 内存淘汰 redis优化 哨兵模
-
使用FPGA的ECG信号滤波与心率计算实战:Verilog实现及测试台搭建指南
-
使用Verilog实现带参数的例化方法