0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

verilog模型举例:利用D触发器实现时钟使能

454398 来源:csdn 作者:csdn 2021-10-01 10:16 次阅读

时钟使能电路是同步设计的基本电路。在很多设计中,虽然内部不同模块的处理速度不同,但由于这些时钟是同源的,可以将它们转化为单一时钟处理。在ASIC中可以通过STA约束让分频始终和源时钟同相,但FPGA由于器件本身和工具的限制,分频时钟和源时钟的Skew不容易控制(使用锁相环分频是个例外),难以保证分频时钟和源时钟同相,因此推荐的方法是使用时钟使能,通过使用时钟使能可以避免时钟“满天飞”的情况,进而避免了不必要的亚稳态发生,在降低设计复杂度的同时也提高了设计的可靠性。

禁止用计数器分频后的信号做其它模块的时钟,而要用改成时钟使能的方式。否则这种时钟满天飞的方式对设计的可靠性极为不利,也大大增加了静态时序分析的复杂性。

带使能端的D触发器,比一般D触发器多了使能端,只有在使能信号EN有效时,数据才能从D端被打入D触发器,否则Q端输出不改变。

我们可以用带使能端的D触发器来实现时钟使能的功能。

verilog模型举例

在某系统中,前级数据输入位宽为8位,而后级的数据输出位宽为32,我们需要将8bit数据转换为32bit,由于后级的处理位宽为前级的4倍,因此后级处理的时钟频率也将下降为前级的1/4,若不使用时钟使能,则要将前级的时钟进行4分频来作后级处理的时钟。这种设计方法会引入新的时钟域,处理上需要采取多时钟域处理的方式,因而在设计复杂度提高的同时系统的可靠性也将降低。为了避免以上问题,我们采用了时钟使能以减少设计复杂度。

例1:采用时钟使能

module clk_en(clk, rst_n, data_in, data_out);
input clk;
input rst_n;
input [7:0] data_in;
output [31:0] data_out;

reg [31:0] data_out;
reg [31:0] data_shift;
reg [1:0] cnt;
reg clken;

always @(posedge clk or negedge rst_n)
begin
   if (!rst_n)
      cnt <= 0;
   else
      cnt <= cnt + 1;
end

always @(posedge clk or negedge rst_n)
begin
   if (!rst_n)
      clken <= 0;
   else if (cnt == 2'b01)
      clken <= 1;
   else
      clken <= 0;
end

always @(posedge clk or negedge rst_n)
begin
   if (!rst_n)
      data_shift <= 0;
   else 
      data_shift <= {data_shift[23:0],data_in};
end

always @(posedge clk or negedge rst_n)
begin
   if (!rst_n)
      data_out <= 0;
   else if (clken == 1'b1)
      data_out <= data_shift;
end

endmodule

例2:采用分频方法

module clk_en1(clk, rst_n, data_in, data_out);
input clk;
input rst_n;
input [7:0] data_in;
output [31:0] data_out;

reg [31:0] data_out;
reg [31:0] data_shift;
reg [1:0] cnt;
wire clken;

always @(posedge clk or negedge rst_n)
begin
   if (!rst_n)
      cnt <= 0;
   else
      cnt <= cnt + 1;
end

assign clken = cnt[1];

always @(posedge clk or negedge rst_n)
begin
   if (!rst_n)
      data_shift <= 0;
   else 
      data_shift <= {data_shift[23:0],data_in};
end

always @(posedge clken or negedge rst_n)
begin
   if (!rst_n)
      data_out <= 0;
   else 
      data_out <= data_shift;
end

endmodule

编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1600

    文章

    21279

    浏览量

    592846
  • asic
    +关注

    关注

    34

    文章

    1141

    浏览量

    119246
  • Verilog
    +关注

    关注

    28

    文章

    1324

    浏览量

    109285
  • 时钟
    +关注

    关注

    10

    文章

    1479

    浏览量

    130295
  • D触发器
    +关注

    关注

    2

    文章

    147

    浏览量

    47360
收藏 人收藏

    评论

    相关推荐

    d触发器的功能 d触发器的状态方程

    D触发器是一种经典的时序逻辑电路,具有广泛的应用领域。它的功能包括存储和传输数据,以及在时钟信号的作用下进行状态转换。本文将探讨D触发器的功能和状态方程。 首先,让我们从D触发器的基本
    的头像 发表于 02-18 16:28 595次阅读

    如何用jk触发器构成t触发器?t触发器逻辑功能有哪些

    如何用JK触发器构成T触发器 JK触发器是一种基本的触发器电路,由两个输入端J和K控制,以及两个输出端Q和Q'组成。JK触发器的输出可以持续
    的头像 发表于 02-06 14:11 927次阅读

    t触发器和jk触发器的区别和联系

    单稳态触发器,具有一个触发输入(T输入)和一个时钟输入,以及一个输出。T触发器的输出状态取决于其当前状态、触发输入和
    的头像 发表于 02-06 14:04 914次阅读

    d触发器的逻辑功能 d触发器sd和rd作用

    了解一下D触发器的逻辑功能。D触发器是一种存储设备,它可以存储和传输一个二进制位数值。D触发器有两个输入端和两个输出端。其中一个输入端称为数据输入端D,另一个输入端称为时钟输入端CLK
    的头像 发表于 02-06 13:52 1133次阅读

    d触发器有几个稳态 触发器上升沿下降沿怎么判断

    的上升沿和下降沿。 一、SR触发器 SR触发器是最基本的触发器之一,通过它可以实现存储器、寄存器等功能。 SR触发器有两个输入:S和R,以及
    的头像 发表于 02-06 13:36 643次阅读

    触发器和锁存器的区别和联系

    和锁存器的区别和联系。 首先,我们来了解触发器的概念。触发器是一种能够在时钟信号的作用下存储和延迟数据的器件。它们是由通用逻辑门电路实现的,可以看作是锁存器的一种特殊形式。
    的头像 发表于 12-25 14:50 719次阅读

    JK触发器与T触发器Verilog代码实现和RTL电路实现

    JK 触发器Verilog 代码实现和 RTL 电路实现
    的头像 发表于 10-09 17:29 2387次阅读
    JK<b class='flag-5'>触发器</b>与T<b class='flag-5'>触发器</b>的<b class='flag-5'>Verilog</b>代码<b class='flag-5'>实现</b>和RTL电路<b class='flag-5'>实现</b>

    触发器空翻现象指什么?

    被称为"触发器空翻"。 在数字集成电路中,触发器是一种非常常见的存储器件,它具有输入端、输出端和时钟输入端。其中输入端和输出端呈现出一种状态,当时钟信号时高电平时,
    的头像 发表于 09-17 14:47 3406次阅读

    rs触发器是上升沿还是下降沿 触发器如何确定是上升沿

    在基本的RS触发器中,触发器的输出将在时钟信号的上升沿或下降沿发生变化。当时钟信号的上升沿到达时,称为上升沿触发器;当
    的头像 发表于 09-12 12:52 4385次阅读

    rs触发器和rs锁存器的区别是什么

    在传统的异步 RS 触发器中,当输入的 R 和 S 同时为 1 时,会引发互锁问题,输出结果是不确定的。为了避免这个问题,常常使用带有使能控制的同步触发器,如带有时钟信号的 D 触发器
    的头像 发表于 08-28 15:44 2465次阅读

    什么是触发器?触发器的作用是什么?触发器触发方式

    用于实现业务规则或约束,例如限制特定数据插入、更新或删除,或自动记录每次数据修改的信息。 触发器可以在以下情况下自动触发: 1. 插入操作:当要插入一条记录时,触发器可以在记录被插入到
    的头像 发表于 08-24 15:50 4405次阅读

    什么是D触发器,D触发器如何工作的?

    锁存器和触发器有时组合在一起,因为它们都可以在其输出上存储一位(1或0)。与锁存器相比,触发器是需要时钟信号(Clk)的同步电路。D 触发器仅在时钟
    的头像 发表于 06-29 11:50 1.6w次阅读
    什么是D<b class='flag-5'>触发器</b>,D<b class='flag-5'>触发器</b>如何工作的?

    请问一下D触发器怎样实现四分频呢?

    请问一下D触发器怎样实现四分频呢?
    发表于 05-10 14:34

    verilog写的门级d触发器做2分频用modelsim和ise仿真都无法出现波形?

    我用门级描述verilog写了d触发器,然后链接了q非端和d断,把输出q连接到一个计数想做2分频,但是因为没有初始状态,波形都是x。仿真
    发表于 05-10 11:52

    JK触发器D触发器所使用的时钟脉冲能否用逻辑电平开关提供?

    JK触发器D触发器所使用的时钟脉冲能否用逻辑电平开关提供?为什么?
    发表于 05-10 11:38