集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1321|回复: 1

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

[复制链接]
lovelyboywyl 发表于 2010-11-20 10:20:12 | 显示全部楼层 |阅读模式
在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_cycle  clk = ~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 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-12-27 01:24 , Processed in 0.057528 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表