【FPGA & Verilog】奇数分频器 (50%)

2.1 设计输⼊

1. 模块名称:FrequencyDivider

2. 输⼊输出:CLK、RSTn、CLK_15

2.2 引脚约束

1. 输⼊端 ⾃定义

2. 输出端 ⾃定义

2.3 设计要求

1. 输出时钟的周期是输⼊时钟的15倍(15分频器)

2. 分别实现 7/15 占空⽐和 50% 占空⽐两种分频⽅式

3. 使⽤RTL View分析电路的区别

2.4 电路仿真1. 使⽤ModelSim仿真

7:15分频

即分频输出CLK15的一个周期中,高低电平时间之比为 7:8,据此可以在控制输出CLK15的高低电平

设计代码:

module FrequencyDivider(CLK,RSTn,CLK_15);
input CLK,RSTn;
output CLK_15;
reg [3:0]counter_p,counter_n;
reg CLK_p,CLK_n;
assign CLK_15 = CLK_p | CLK_n;

always@(posedge CLK or negedge RSTn)
if(! RSTn) begin
counter_p <= 0;
CLK_p <= 0;
end
else if(counter_p < 14)
        begin
  counter_p <= counter_p + 1;
  if(counter_p < 7)
CLK_p <= 1;
  else
CLK_p <= 0;
  end
else
counter_p <= 0;

always@(negedge CLK or negedge RSTn)
if(! RSTn) begin
counter_n <= 0;
CLK_n <= 0;
end
else if(counter_n < 14)
        begin
  counter_n <= counter_n + 1;
  if(counter_n < 7)
CLK_n <= 1;
  else
CLK_n <= 0;
end
else
counter_n <= 0;
endmodule

(2)50%分频 【是由两个分别由上升沿pos和下降沿neg触发的分频信号合成(或 运算)】

设计代码:

module FrequencyDivider(CLK,RSTn,CLK_15);

input CLK,RSTn;

output CLK_15;

reg [3:0]counter_p,counter_n;

reg CLK_p,CLK_n;

assign CLK_15 = CLK_p | CLK_n;

always@(posedge CLK or negedge RSTn)

  if(! RSTn) begin

  counter_p <= 0;

  CLK_p <= 0;

  end

  else if(counter_p < 14)

        begin

    counter_p <= counter_p + 1;

    if(counter_p < 7)

    CLK_p <= 1;

    else

    CLK_p <= 0;

    end

  else

  counter_p <= 0;

always@(negedge CLK or negedge RSTn)

  if(! RSTn) begin

  counter_n <= 0;

  CLK_n <= 0;

  end

  else if(counter_n < 14)

        begin

    counter_n <= counter_n + 1;

    if(counter_n < 7)

    CLK_n <= 1;

    else

    CLK_n <= 0;

  end

  else

  counter_n <= 0;

endmodule

由RTL view可以看出:

CLK_15由或运算得来,由CLK_n和CLK_p相加得来,而两者的区别在于CLK的边沿不同

一个为上升沿,一个为下降沿,因此其中一个D触发器的时钟clk取了一次反

3.创建VWF进行功能仿真:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值