现场可编程门阵列上时钟分频器的Verilog代码

上次,我提出了一个VHDL代码 时钟分频器 在FPGA上此Verilog项目在以下位置为Clock Divider提供完整的Verilog代码 现场可编程门阵列 与Testbench一起进行仿真。的 Verilog 时钟分频器在FPGA上进行了仿真和验证。

现场可编程门阵列上时钟分频器的Verilog代码

输出clock_out的频率等于输入clock_out的频率除以Verilog代码中的DIVISOR参数的值。 
F(clock_out)= F(clock_in)/ DIVISOR
要更改clock_out的时钟频率,只需修改DIVISOR参数。

Verilog代码 用于打开时钟分频器 现场可编程门阵列:

// hzgifts.cn: 现场可编程门阵列 projects, VHDL projects, Verilog项目
// Verilog project: Verilog代码 for 时钟分频器 on 现场可编程门阵列
// Top level Verilog代码 for 时钟分频器 on 现场可编程门阵列
module Clock_divider(clock_in,clock_out
    );
input clock_in; // input clock on 现场可编程门阵列
output reg clock_out; // output clock after dividing the input clock by divisor
reg[27:0] counter=28'd0;
parameter DIVISOR = 28'd2;
// The frequency of the output clk_out
//  = The frequency of the input clk_in divided by DIVISOR
// For example: Fclk_in = 50Mhz, if you want to get 1Hz signal to blink LEDs
// You will modify the DIVISOR parameter value to 28'd50.000.000
// Then the frequency of the output clk_out = 50Mhz/50.000.000 = 1Hz
always @(posedge clock_in)
begin
 counter <= counter + 28'd1;
 if(counter>=(DIVISOR-1))
  counter <= 28'd0;
 clock_out <= (counter<DIVISOR/2)?1'b1:1'b0;
结束 终端模块

现场可编程门阵列上时钟分频器的Verilog Testbench代码:

`timescale 1ns / 1ps
// hzgifts.cn 现场可编程门阵列 projects, VHDL projects, Verilog项目
// Verilog project: Verilog代码 for 时钟分频器 on 现场可编程门阵列
// Testbench Verilog代码 for 时钟分频器 on 现场可编程门阵列
module tb_clock_divider;
 // Inputs
 reg clock_in;
 // Outputs
 wire clock_out;
 // Instantiate the Unit Under Test (UUT)
 // Test the 时钟分频器 in Verilog
 Clock_divider uut (
  .clock_in(clock_in), 
  .clock_out(clock_out)
 );
 initial begin
  // Initialize Inputs
  clock_in = 0;
  // create input clock 50MHz
        forever #10 clock_in = ~clock_in;
 结束
      
终端模块

Verilog中时钟分频器的仿真波形:

现场可编程门阵列上时钟分频器的Verilog代码

注意,该代码将在您的设计中创建另一个时钟,因此在时钟树综合过程中需要使用FPGA工具来照顾额外的内部生成时钟,这可能会导致FPGA时序问题,因为它不是由FPGA生成的。 专用FPGA时钟发生器 (PLL / DCM /等)。此外,您还必须照顾 多时钟域问题在设计时,例如在不同时钟域之间连接信号(需要同步器等)时。 建议在FPGA上生成较慢的时钟使能信号,而不是驱动设计的另一部分。你可以拜访 这里 有关如何在Verilog中进行操作的更多详细信息.
推荐的 Verilog项目:
2. FIFO存储器的Verilog代码
3. 用于16位单周期MIPS处理器的Verilog代码
4. Verilog HDL中的可编程数字延迟计时器
5. 用于数字电路中基本逻辑组件的Verilog代码
6. 用于32位无符号除法器的Verilog代码
7. 用于定点矩阵乘法的Verilog代码
8. Verilog HDL中的车牌许可证识别
9. 提前进位乘法器的Verilog代码
10。  微处理器的Verilog代码
11。 4x4乘法器的Verilog代码
12 停车场系统的Verilog代码
13 使用Verilog HDL在FPGA上进行图像处理
14。 如何使用Verilog HDL将文本文件加载到FPGA中
15 交通信号灯控制器的Verilog代码
16。 现场可编程门阵列上的闹钟的Verilog代码
17。 比较器设计的Verilog代码
18岁 D触发器的Verilog代码
19 Full Adder的Verilog代码
20 带testbench的计数器的Verilog代码
21 16位RISC处理器的Verilog代码
22 用于在FPGA上反跳按钮的Verilog代码
23。 如何为双向/输入端口编写Verilog Testbench
30岁  Verilog中的N位加法器设计
31。 Verilog和VHDL:通过示例解释
32。 现场可编程门阵列上时钟分频器的Verilog代码
33。 如何在Verilog中生成时钟使能信号
34。 用于PWM发生器的Verilog代码
35岁 Verilog编码与软件编程
36。 Moore FSM序列检测器的Verilog代码
37。 Basys 3 现场可编程门阵列上的7段显示控制器的Verilog代码
现场可编程门阵列 Verilog VHDL课程

7条评论:

  1. Isn'在示例代码中是否可以推断出锁存器?

    回复删除
  2. 因此,如果要修改占空比,可以在分配状态下更改分频值吗?除数/ 2 = 50%dc,除数/ 4 = 25%dc,依此类推。

    回复删除
    回覆
    1. 是的,可以修改占空比。请注意,获得了占空比'奇数除数不等于50%。

      删除
  3. 将时钟分频为2、4、6、8等等吗?

    回复删除
  4. 您好,如果我想更改频率,如何修改分频器?我必须在assign或参数中执行此操作吗?

    回复删除

热门FPGA项目