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