赞
踩
模块文件
1 module decoder_4_16( 2 a, 3 b, 4 c, 5 d, 6 out, 7 ); 8 input a; 9 input b; 10 input c; 11 input d; 12 output reg [15:0]out;//同时定义了out的长度,输入输出类型和数据类型,注意【15:0】长度放在名字前面,且从大到小。 13 14 always@(*)begin//等价于always({a,b,c,d}) *号表示所有输入信号,不包括输出信号 15 case({a,b,c,d}) //case和endcase是固定搭配,但有多种情况的时候使用,十分方便 16 4'b0000:out=16'b0000_0000_0000_0001; 17 4'b0001:out=16'b0000_0000_0000_0010; // 位宽度'进制 数值 :赋值语句 18 4'b0010:out=16'b0000_0000_0000_0100; // 注意’是引号,不同了tinmescale。中间是用冒号连接赋值语句 19 4'b0011:out=16'b0000_0000_0000_1000; 20 4'b0100:out=16'b0000_0000_0001_0000; 21 4'b0101:out=16'b0000_0000_0010_0000; 22 4'b0110:out=16'b0000_0000_0100_0000; 23 4'b0111:out=16'b0000_0000_1000_0000; 24 4'b1000:out=16'b0000_0001_0000_0000; 25 4'b1001:out=16'b0000_0010_0000_0000; 26 4'b1010:out=16'b0000_0100_0000_0000; 27 4'b1011:out=16'b0000_1000_0000_0000; 28 4'b1100:out=16'b0001_0000_0000_0000; 29 4'b1101:out=16'b0010_0000_0000_0000; 30 4'b1110:out=16'b0100_0000_0000_0000; 31 4'b1111:out=16'b1000_0000_0000_0000; 32 endcase 33 end 34 35 endmodule
仿真激励代码
`timescale 1ns/1ns module decoder_4_16_tb(); reg s_a; reg s_b; reg s_c; reg s_d; wire [15:0]s_out; decoder_4_16 decoder_4_16_simulation( .a(s_a), .b(s_b), .c(s_c), .d(s_d), .out(s_out) ); initial begin s_a=0;s_b=0;s_c=0;s_d=0; #100; s_a=0;s_b=0;s_c=0;s_d=1; #100; s_a=0;s_b=0;s_c=1;s_d=0; #100; s_a=0;s_b=0;s_c=1;s_d=1; #100; s_a=0;s_b=1;s_c=0;s_d=0; #100; s_a=0;s_b=1;s_c=0;s_d=1; #100; s_a=0;s_b=1;s_c=1;s_d=0; #100; s_a=0;s_b=1;s_c=1;s_d=1; #100; s_a=1;s_b=0;s_c=0;s_d=0; #100; s_a=1;s_b=0;s_c=0;s_d=1; #100; s_a=1;s_b=0;s_c=1;s_d=0; #100; s_a=1;s_b=0;s_c=1;s_d=1; #100; s_a=1;s_b=1;s_c=0;s_d=0; #100; s_a=1;s_b=1;s_c=0;s_d=1; #100; s_a=1;s_b=1;s_c=1;s_d=0; #100; s_a=1;s_b=1;s_c=1;s_d=1; #100; $stop; end endmodule
1.always的用法
格式:always @(敏感信号)。可以直接用(*)代表所有输入信号,也可以是某一组特定信号({a,b,c}),也可以是某几个信号(a or b or c)。
用处:在时序电路中,always @(posedge Clk)表示上升沿触发,下降沿用negedge。如果需要加异步功能,写成always @(posedge Clk or posedge Reset)。用or连接。如果异步信号高电平有效,则Reset用上升沿posedge修饰,反之。同时把if(Reset==1)改为if(Reset==0),此外,异步判断语句必须在always第一句,首先判断。
注意事项:别在不同always块内为同一变量赋值。?别在同一always同时阻塞非阻塞赋值?描述组合用阻塞(电平敏感),描述时序用非阻塞(边沿敏感)。=或《=左边须为reg型。@()内不能同时含电平和边沿,不同同时含一个信号的上升下降?
2.case的用法
case-endcase 中加入并行判断结构和赋值语句。它的判断条件一般是互斥的,且没有优先级。
casez不考虑高阻态z。casex不考虑高阻态z和不定态x。注意case里面语句的格式和结构,见上面代码。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。