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

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

3天内不再提示

FPGA的设计中的时钟使能电路

454398 来源:博客园 作者:fpga_hjh 2020-11-10 13:53 次阅读

时钟使能电路是同步设计的重要基本电路,在很多设计中,虽然内部不同模块的处理速度不同,但是由于这些时钟是同源的,可以将它们转化为单一的时钟电路处理。在FPGA的设计中,分频时钟和源时钟的skew不容易控制,难以保证分频时钟和源时钟同相。故此推荐采用使用时钟使能的方法,通过使用时钟使能可以避免时钟“满天飞”的情况,进而避免了不必要的亚稳态发生,在降低设计复杂度的同时也提高了设计的可靠性。

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

在上图中clk1x是CLK的四分频后产生的时钟,clk1x_en是与clk1x同频的时钟使能信号,用clk1x_en作为DFF的使能端,D端的数据只有在clk1x_en有效地时候才能打入D触发器,从而在不引入新时钟的前提,完成了下图电路一致的逻辑功能。

在某系统中,前级数据输入位宽为8,而后级的数据输出位宽32,我们需要将8bit的数据转换成32bit的数据,因此后级处理的时钟频率为前级的1/4,若不使用时钟时能,则就要将前级时钟进行4分频来作为后级处理的时钟,这种设计方法会引入新的时钟域,为了避免这种情况,我们采用了时钟时能的方法来减少设计的复杂度。

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

reg [1:0] cnt;
reg [31:0] shift_reg;

always @ (posedge clk,negedge rst_n)
begin
    if(!rst_n)
        cnt <= 2'b0;
     else
        cnt <= cnt +1'b1;
end 

always @ (posedge clk,negedge rst_n)
begin
    if(!rst_n)
        clk1x_en <= 1'b0;
    else if(cnt ==2'b01)
        clk1x_en <= 1'b1;
    else
        clk1x_en <= 1'b0;
end

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

always @ (posedge clk,negedge rst_n)
begin
    if(!rst_n)
        data_out<= 32'b0;
    else if(clk1x_en==1'b1)//仅在clk1x_en为1时才将shift_reg的值赋给data_out
        data_out<=shift_reg;
end 

endmodule 

编辑:hfy

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

    关注

    1629

    文章

    21729

    浏览量

    603028
  • D触发器
    +关注

    关注

    3

    文章

    164

    浏览量

    47905
  • 时钟电路
    +关注

    关注

    10

    文章

    236

    浏览量

    50717
收藏 人收藏

    评论

    相关推荐

    FPGA做深度学习走多远?

    出现时钟偏移,使 FPGA 无法正确同步,最终死机。 三、FPGA 内部状态方面 配置丢失:某些 FPGA 在电源不稳定的情况下可能会丢失配
    发表于 09-27 20:53

    FPGA如何消除时钟抖动

    FPGA(现场可编程门阵列)设计,消除时钟抖动是一个关键任务,因为时钟抖动会直接影响系统的时序性能、稳定性和可靠性。以下将详细阐述FPGA
    的头像 发表于 08-19 17:58 1273次阅读

    伺服电机的使信号及其相关问题

    的作用 伺服电机的使信号是电机控制系统的一个重要信号,其主要作用如下: 1.1 控制电机启动和停止 使信号是控制伺服电机启动和停止的关
    的头像 发表于 07-10 14:58 1588次阅读

    在中断关闭中断使,在应用开启中断使,为什么没有响应?

    请问我在中断关闭中断使,在应用开启中断使。但是开始会响应。才是多按几次按钮中断就不响应呢
    发表于 06-26 06:34

    伺服开启使ON接什么点

    伺服电机是一种高精度、高响应速度的电机,广泛应用于自动化设备、机器人、数控机床等领域。在伺服电机的控制使信号(Enable Signal)是一个非常重要的信号,它用于控制伺服电机的启动和停止
    的头像 发表于 06-14 10:21 2095次阅读

    STM32CubeMX怎么使CRC时钟

    请教各位大侠,STM32CubeMX,怎么使CRC时钟
    发表于 05-16 07:04

    时钟使的八边三格D型触发器数据表

    电子发烧友网站提供《带时钟使的八边三格D型触发器数据表.pdf》资料免费下载
    发表于 05-15 10:42 0次下载
    带<b class='flag-5'>时钟</b><b class='flag-5'>使</b><b class='flag-5'>能</b>的八边三格D型触发器数据表

    stm32辅助时钟AFIO,什么时候使时钟?其作用是什么?

    一直不知道AFIO,请指点一下,什么时候使时钟。其作用是什么?
    发表于 05-15 08:01

    FPGA时钟电路结构原理

    FPGA 包含一些全局时钟资源。以AMD公司近年的主流FPGA为例,这些时钟资源由CMT(时钟
    发表于 04-25 12:58 1854次阅读
    <b class='flag-5'>FPGA</b>的<b class='flag-5'>时钟</b><b class='flag-5'>电路</b>结构原理

    读《FPGA入门教程》

    ’。电路‘clk’为时钟信号,‘D1’,‘D2’,‘D3’为移位寄存器的输出,‘enable’为该电路使
    发表于 03-29 16:42

    使用cubeMX6.5.0配置H750VBT6,PLL2DIVP2无法被使的原因?

    在使用cubeMX6.5.0 配置H750VBT6,时钟树和ADC都已配置,但是PLL2DIVP2无法被使,同时ADC时钟也未
    发表于 03-27 08:11

    FPGA输入的时钟信号必须是方波么?正弦波会有影响么?

    FPGA设计时钟信号通常需要满足一定的要求。 首先,时钟信号在FPGA必须是一个周期性的信
    的头像 发表于 01-31 11:31 3472次阅读

    FPGA时钟内部设计方案

    时钟设计方案 在复杂的FPGA设计,设计时钟方案是一项具有挑战性的任务。设计者需要很好地掌握目标器件所能提供的时钟资源及它们的限制,需
    发表于 01-22 09:30 628次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>时钟</b>内部设计方案

    异步电路时钟同步处理方法

    异步电路时钟同步处理方法  时钟同步在异步电路是至关重要的,它确保了
    的头像 发表于 01-16 14:42 1169次阅读

    FPGA时钟的用法

    生成时钟包括自动生成时钟(又称为自动衍生时钟)和用户生成时钟。自动生成时钟通常由PLL或MMCM生成,也可以由具有分频功能的
    的头像 发表于 01-11 09:50 1842次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>中</b><b class='flag-5'>时钟</b>的用法