lovelyboywyl 发表于 2010-11-20 10:21:17

【FPGA设计实例】利用条件语句实现较复杂的时序逻辑电路

与常用的高级程序语言一样,为了描述较为复杂的时序关系,Verilog HDL提供了条件语句供分支判断时使用。在可综合风格的Verilog HDL模型中常用的条件语句有if…else和case…endcase两种结构,用法和C程序语言中类似。两者相较,if…else用于不很复杂的分支关系,实际编写可综合风格的模块、特别是用状态机构成的模块时,更常用的是case…endcase风格的代码。这一节我们给的是有关if…else的范例,有关case…endcase结构的代码已后会经常用到。
下面给出的范例也是一个可综合风格的分频器,是将10M的时钟分频为500K的时钟。基本原理与1/2分频器是一样的,但是需要定义一个计数器,以便准确获得1/20分频

模块源代码:
// --------------- fdivision.v -----------------------------
module fdivision(RESET,F10M,F500K);
input F10M,RESET;
output F500K;
reg F500K;
reg j;
always @(posedge F10M)
    if(!RESET)          //低电平复位。
      begin
      F500K <= 0;
      j <= 0;
      end
    else
      begin
      if(j==19)      //对计数器进行判断,以确定F500K信号是否反转。
          begin
            j <= 0;
            F500K <= ~F500K;
          end
      else
          j <= j+1;
      end
endmodule

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

`timescale 1ns/100ps
`define clk_cycle 50

module division_Top;

reg F10M_clk,RESET;

wireF500K_clk;

always #`clk_cycle   F10M_clk=~ F10M_clk;

initial
begin
RESET=1;
F10M=0;
#100 RESET=0;
#100 RESET=1;
#10000 $stop;
end

fdivision fdivision (.RESET(RESET),.F10M(F10M_clk),.F500K(F500K_clk));

endmodule

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

这个都很基础,有C基础的话,学习verilog还是很容易的

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

这个都很基础,有C基础的话,学习verilog还是很容易的

大鹏 发表于 2022-3-7 18:31:19

【FPGA设计实例】利用条件语句实现较复杂的时序逻辑电路

大鹏 发表于 2022-3-21 12:01:55

【FPGA设计实例】利用条件语句实现较复杂的时序逻辑电路
页: [1]
查看完整版本: 【FPGA设计实例】利用条件语句实现较复杂的时序逻辑电路