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 观看的波形相同,所以有以下结论:

  如果被赋值对象,所赋的值是常数,那么门电路或触发器电路实现的功能相同;我们为节省空间,在常数赋值时用“=”取代“<=”。

posted on 2012-06-10 16:27  mculove  阅读(449)  评论(0编辑  收藏  举报

导航