Verilog HDL 练习1 普通2分频
通过小小的练习:
学习程序设置的风格
电路的触发器存在影响
测试代码
//开始测试模版 //定义时基 `timescale 1ns/100ps //定义宏 `define clk_cycle 50 //模版 module clk_Top; //定义寄存器 reg clk; reg reset; //定义线 wire clk_out; //电路 always #`clk_cycle clk = ~clk; //初始化 initial begin clk = 0; reset = 1; #100 reset = 0; #100 reset = 1; #10000 $stop; end //插入模版 half_clk half_clk( //input .reset(reset), .clk_in(clk), //output .clk_out(clk_out)); endmodule //结束电路
模版
//开始模版 module half_clk( //input reset, clk_in, //output clk_out); //定义IO口 input reset; input clk_in; output clk_out; //定义寄存器 reg clk_out; //电路 always @(posedge clk_in or negedge reset) begin if(!reset) clk_out <= 0; else clk_out = ~clk_out; end endmodule //结束电路
图1
图1仿真的波形,clk_out在reset拉低后就始化为0;
如果修改代码为if(!reset) clk_out = 0 观看的波形相同,所以有以下结论:
如果被赋值对象,所赋的值是常数,那么门电路或触发器电路实现的功能相同;我们为节省空间,在常数赋值时用“=”取代“<=”。