2021-06-04

这篇博客探讨了两个VerilogHDL模块:一个3到8线解码器和一个时序逻辑转换器。解码器在使能信号生效时,根据输入值产生特定的输出,而转换器则在时钟边沿和复位信号的控制下,将数据输入转换为预设序列,并在完成转换时输出标志。测试模块确保了这两个设计的正确性和功能完整性。
摘要由CSDN通过智能技术生成

Verilog HDL 测试模块

1.设计所需要的功能模块
2.验证所设计模块的正确性
3.代码:
module decoder3x8(din,en,dout,ex);
input [2:0] din;input en;output [7:0] dout;output ex;reg [7:0] dout;reg ex;always @(din or en)if(en) begin dout=8’b1111_1111; ex=1’b1; endelsebegincase(din)3’b000:begin dout=8’b1111_1110; ex=1’b0;end3’b001:begindout=8’b1111_1101; ex=1’b0;end3’b010: begindout=8’b1111_1011; ex=1’b0;end3’b011:begindout=8’b1111_0111;ex=1’b0;end3’b100: begindout=8’b1110_1111;ex=1’b0;end3’b101: begindout=8’b1101_1111; ex=1’b0 ;end3’b110:begindout=8’b1011_1111; ex=1’b0 ;end3’b111: begindout=8’b0111_1111; ex=1’b0;enddefault:begindout=8’b1111_1111; ex=1’b0;endendcaseendendmodule
在这里插入图片描述

时序逻辑的测试模块

1.编辑代码
2.运行
3.代码
module p2s(data_in,clock,reset,load, data_out,done);
input [3:0] data_in;input clock, reset ,load;output data_out;output done; reg done;reg [3:0]temp; reg [3:0]cnt;always @(posedge clock or posedge reset ) beginif(reset)begintemp<=0;cnt<=0;done<=1;endelse if(load)begintemp<=data_in;cnt<=0;done<=0;endelse if(cnt3)begintemp <= {temp[2:0],1’b0};cnt<=0;done<=1;endelsebegintemp <= {temp[2:0],1’b0};cnt<=cnt+1;done<=0;endendassign data_out=(done1)?1’bz:temp[3];endmodule
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值