lovelyboywyl 发表于 2010-11-20 10:20:12

【FPGA设计实例】简单时序逻辑电路的设计

在Verilog HDL中,相对于组合逻辑电路,时序逻辑电路也有规定的表述方式。在可综合的Verilog HDL模型,我们通常使用always块和 @(posedge clk)或 @(negedge clk)的结构来表述时序逻辑。下面是一个1/2分频器的可综合模型。
// half_clk.v:
module half_clk(reset,clk_in,clk_out);
input clk_in,reset;
output clk_out;
reg clk_out;

always @(posedge clk_in)
begin
    if(!reset)clk_out=0;
    else      clk_out=~clk_out;
end
endmodule

      在always块中,被赋值的信号都必须定义为reg型,这是由时序逻辑电路的特点所决定的。对于reg型数据,如果未对它进行赋值,仿真工具会认为它是不定态。为了能正确地观察到仿真结果,在可综合风格的模块中我们通常定义一个复位信号reset,当reset为低电平时,对电路中的寄存器进行复位。

测试模块的源代码:
//-------------------clk_Top.v -----------------------------

`timescale 1ns/100ps
`define clk_cycle 50

module clk_Top.v
reg clk,reset;
wire clk_out;

always#`clk_cycleclk = ~clk;

initial
begin
   clk = 0;
   reset = 1;
    #100 reset = 0;
    #100 reset = 1;
    #10000 $stop;
end

half_clk half_clk(.reset(reset),.clk_in(clk),.clk_out(clk_out));

endmodule

lovelyboywyl 发表于 2010-11-20 10:38:30

回去用工具试试
页: [1]
查看完整版本: 【FPGA设计实例】简单时序逻辑电路的设计