握手信号输入一倍,输出两倍[verilog]

这篇具有很好参考价值的文章主要介绍了握手信号输入一倍,输出两倍[verilog]。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

module one_to_two #(
    parameter WORD_LEN = 33
)
(
    input                     clk,
    input                    arst,
    
    input [WORD_LEN-1:0]     i_din,
    input                     i_din_valid,
    output                     o_din_ready,
    
    output [2*WORD_LEN-1:0] o_dout,
    input                     i_dout_ready,
    output                     o_dout_valid
);

reg        [WORD_LEN * 2 - 1 : 0]    store_data;
reg        [1                : 0]    dat_cnt;

always @(posedge clk or negedge arst)
    if(!arst)
        store_data <= {2*WORD_LEN{1'b0}};
    else if(i_din_valid && o_din_ready)
        store_data <= {store_data[WORD_LEN - 1 : 0],i_din};

    
always @(posedge clk or negedge arst)
    if(!arst)
        dat_cnt <= 2'd0;
    else if(i_dout_ready && o_dout_valid)
        dat_cnt <= 2'd0;
    else if(i_din_valid && o_din_ready)
        dat_cnt <= dat_cnt + 2'd1;
        

assign o_dout = (dat_cnt == 2'd2) ?store_data : {store_data[WORD_LEN - 1 : 0],i_din};
assign o_din_ready = dat_cnt == 2'd0 || (dat_cnt == 2'd1 && i_dout_ready);
assign o_dout_valid = dat_cnt == 2'd2 || (dat_cnt == 2'd1 && i_din_valid);

endmodule文章来源地址https://www.toymoban.com/news/detail-647933.html

到了这里,关于握手信号输入一倍,输出两倍[verilog]的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 跨时钟域握手信号的实现(Verilog)

    使用握手信号是在两个不同域之间传输数据的有效方式,如下图所示: 使用握手信号xack和yreq,系统X发给系统Y,下面是使用握手信号传输数据的例子: 1)发送器系统X将数据放到数据总线上并发出xreq请求信号,表示有效数据已经发送到接收器系统Y的数据总线上 2)把xreq信号

    2024年02月16日
    浏览(43)
  • 基于vivado+Verilog FPGA开发 — 基于AD9767高速DAC的DDS信号发生器

    目录  一、功能定义 二、设计输入  1、主模块 2、DDS模块 3、 按键消抖模块 三、功能仿真  四、综合优化 五、布局布线 六、时序仿真 七、板级调试  代码规范:Verilog 代码规范_verilog代码编写规范-CSDN博客 开发流程:FPGA基础知识----第二章 FPGA 开发流程_fpga 一个项目的整个

    2024年03月18日
    浏览(72)
  • 【Verilog】握手信号实现跨时钟域数据传输-handshake

    handshake握手电路 跨时钟域处理是个很庞大并且在设计中很常出现的问题 握手(handshake)是用来处理信号跨时钟域传递的一个有效的方法 使用握手协议方式处理跨时钟域数据传输,只需要对双方的握手信号(req和ack)分别使用脉冲检测方法进行同步 req与ack就和TCP传输之前的三次

    2024年02月05日
    浏览(37)
  • 「Verilog学习笔记」使用握手信号实现跨时钟域数据传输

    专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网

    2024年02月04日
    浏览(45)
  • verilog 模块输入输出描述

    表格 端口 从模块内部看 从模块外部看 input 输入端口 必须为线网类型 额可以线网类型或寄存器类型 output 输出端口 可以是线网类型或寄存器类型 必须为线网类型 inout 输入输出端口 必须为线网类型 必须为线网类型 说明 端口连接规则 将一个端口看成由相互链接的两个部分组

    2024年02月14日
    浏览(42)
  • 一文讲清模拟信号、自然信号、数字信号、模拟输入输出

    模拟信号是指在一定周期内进行连续变化的信号,称之为模拟信号,经典的如:电压变化、声波强度变化、温度变化这些自然信号的变化一般称之为模拟信号。 从图中大家可以看到模拟信号的电平变化是逐渐增强与逐渐削弱的,如1v电压-5v电压的变化: 1v-2v-3-4v-5v 从1v逐渐增

    2024年02月08日
    浏览(43)
  • 实验二 基于FPGA的分频器的设计(基本任务:设计一个分频器,输入信号50MHz,输出信号频率分别为1KHz、500Hz及1Hz。拓展任务1:用按键或开关控制蜂鸣器的响与不响。拓展任务2:用按键或开)

    1. 实验目的: (1) 掌握QuartusⅡ软件的层次型设计方法; (2) 掌握元件封装及调用方法; (3) 熟悉FPGA实验平台,掌握引脚锁定及下载。 2. 实验任务: (1) 基本任务:设计一个分频器,输入信号50MHz,输出信号频率分别为1KHz、500Hz及1Hz。 (2) 拓展任务1:用按键或开关

    2024年02月06日
    浏览(44)
  • Verilog中的force语句用来强制更改信号的值,特别适用于仿真和调试。本文将深入探讨force语句在FPGA开发中的应用和注意事项。

    Verilog中的force语句用来强制更改信号的值,特别适用于仿真和调试。本文将深入探讨force语句在FPGA开发中的应用和注意事项。 首先,我们需要了解force语句的语法。其基本格式为force [time] signal = value。其中,time是可选参数,表示在何时开始强制更改信号的值;signal是要更改的

    2024年02月12日
    浏览(71)
  • FPGA学习——verilog捕捉信号上升沿下降沿

    在FPGA使用中,常常需要进行信号的边沿检测,如在串口通信中,需要检测接收信号的下降沿来判断串口的的起始位。 常用的方法就是:设计两个一位的寄存器,用来接收被检测的信号,系统时钟来一次记一次输入信号,如果用了两个寄存器直接异或就可以了 ; 使用高频的时

    2024年02月13日
    浏览(42)
  • Verilog视频信号图形显示 FPGA(iCE40)

    您需要一块带视频输出的 FPGA 板。 我们将在 640x480 下工作,几乎任何视频输出都可以在此像素工作。 它有助于轻松地对 FPGA 板进行编程并相当熟悉 Verilog。 如果您没有开发板,请不要担心,您可以使用 Verilator 模拟器。 材料 Lattice iCE40 即用型开发平台(Xilinx Artix-7) 视频板

    2024年02月03日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包