当前位置:首页 > 《数字电路与逻辑设计》
case01xz0100010100x0010z0001casez01xz0100110101x0011z1111casex01xz0101110111x1111z1111 (10)循环语句 forever:连续的执行语句 repeat:执行n次 while:条件满足则执行 for:分3步走
note:for语句的变量增加不能用“++”
(10.1)forever:连续的执行语句 格式:
forever 语句;
note:常用于产生周期性的波形,作为仿真测试信号,与always的不同之处在于:不能独立写在程序中,而必须写在initial块中。
(10.2)repeat:执行n次 格式:
repeat(执行次数) 语句;
note:常用于产生周期性的波形,作为仿真测试信号,与always的不同之处在于:不能独立写在程序中,而必须写在initial块中。
(11)initial说明语句 格式:
30
initial begin 语句s; end
1. 只执行一次。
2. 常用于仿真信号的产生等。
(12)task和function说明语句 --都用于定义程序模块 区别是:
1. 函数只能跟主模块共用一个仿真时间,任务则没有此限制。 2. 函数不能启动任务,任务可以启动任务和函数
3. 函数至少需要一个输入变量,任务可以没有或多个任何类型的变量 4. 函数返回一个值,任务没有返回值 examples:
switch_bytes(old_word, new_word); new_word = switch_bytes(old_word); 哪个是函数方式?哪个是任务方式?
(三)结合以上的Verilog HDL语言的学习,学习并跟着编写一下例程。
(1)4位全加器
module adder4(cout,sum,ina,inb,cin); output[3:0] sum; output cout; input[3:0] ina,inb; input cin; assign {cout,sum}=ina+inb+cin; endmodule (2)4位计数器
31
module count4(out,reset,clk); output[3:0] out; input reset,clk; reg[3:0] out; always @(posedge clk) begin if (reset) out<=0; //同步复位 else out<=out+1; //计数 end endmodule (3)用case语句描述的 4 选 1 数据选择器 思考题
module mux4_1(out,in0,in1,in2,in3,sel); output out; input in0,in1,in2,in3; input[1:0] sel; reg out; always @(in0 or in1 or in2 or in3 or sel) //敏感信号列表 case(sel) 2'b00: out=in0; 2'b01: out=in1; 2'b10: out=in2; 2'b11: out=in3; default: out=2'bx; endcase endmodule
(1)在4位计数器的基础上,实现带同步清0,同步置1的4位加法计数器。
(2)在以上4选1数据选择器的基础上,实现带1个使能端(低电平有效)的8选1数据选择器。
32
共分享92篇相关文档