【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 这个都很基础,有C基础的话,学习verilog还是很容易的 这个都很基础,有C基础的话,学习verilog还是很容易的 【FPGA设计实例】利用条件语句实现较复杂的时序逻辑电路 【FPGA设计实例】利用条件语句实现较复杂的时序逻辑电路
页:
[1]