Verilog 双向握手示例

2024-05-07

我正在完成一个项目,要求是处理器内部功能单元之间的双向握手。我知道它是什么,但是有没有任何“标准”或一个简单的例子?

我唯一能想到的就是两个单元之间,当它们之间有一条数据线并且当 X 发送到 Y 时,会给出一个单独的“发送”信号。当 Y 接收到“已接收”信号时,信号会通过另一条电线发送到 X。一旦 X 读取到接收到的信号,它就会停止在数据线上发送数据,并将发送线设置为 0 或 Z。然后 Y 也将接收到的信号设置为 0 或 Z。

这都是同步的(在同一时钟上)。

这是解决这个问题的有效方法吗?我认为它在大规模上会变得非常混乱,但我只在基于简单累加器的处理器上工作。


单个时钟域最常见的简单握手是有效/准备好握手。

如果“X”发送到“Y”,则 X 的输出为data and valid,Y 的输出为ready.

当 X 有数据要发送时,它断言有效,并查看就绪状态。如果 posege 时钟上的 valid 和 ready 为高电平,则 X 将考虑要发送的数据,Y 将考虑要接收的数据。

该方案的优点是每个时钟周期可以发送一个数据而无需任何停机时间。如果在有效/就绪为高电平后的下一个周期有效仍然为高电平,则这被认为是第二个数据包。

此外,不要求 Y 在断言就绪之前等待看到有效,Y 可以在可接收数据的任何时候断言就绪。

您描述的方案就是我所说的“req/ack 4 相握手”,因为发送一个数据需要四个时钟周期

1. req=1 ack=0
2. req=1 ack=1
3. req=0 ack=1
4. req=0 ack=0

当跨时钟边界执行异步请求时,这种接口会更好,因为它消除了两次解释数据包的可能性。但对于完全同步的接口,您不需要它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Verilog 双向握手示例 的相关文章

  • 与单进程场景​​相比,多进程场景中的访问时间意外缩短

    我正在从program1访问共享库 共享数组数据结构 并找到读取该数组的所有元素的访问时间 当只有 Program1 单独执行时 我得到了大约 17000 个时钟周期 现在 当我首先在另一个选项卡中执行program2 具有空的while循
  • 屏障/栅栏以及获取、释放语义是如何在微架构上实现的?

    很多问题以及文章 书籍 例如https mirrors edge kernel org pub linux kernel people paulmck perfbook perfbook 2018 12 08a pdf https mirr
  • .csproj 的平台特定 ItemGroup 适用于程序集引用,但不适用于内容包含?

    由于我们有三个显式 x86 和 x64 版本的程序集 因此我编辑了相应的 csproj 文件以使用 例如 如下所示的块
  • 虚拟化页表的工作原理

    阅读有关虚拟化页表概念的内容 其中部分页表放入虚拟内存中 维基百科 https en wikipedia org wiki Page table Virtualized page table以及 Patterson 和 Hennessy 页
  • 在 Verilog 中判断总线是否包含单个 x 的最佳方法是什么?

    我有一个监控总线的测试台 总线内的一些信号 位 可以是 1 bx 由于多种原因 我需要知道总线内是否有任何信号是 1 bx 如果总线包含任何 x 测试 不用于综合 仅用于模拟目的 的最佳方法是什么 我曾希望我可以使用减少或然后使用 但这似乎
  • 字节码指令和处理器操作之间的关系

    Java 规范保证原始变量赋值始终是原子的 除了long和双types 相反 获取并添加 http en wikipedia org wiki Fetch and add对应著名的操作i 增量操作将是非原子的 因为会导致读取 修改 写入操作
  • L2 逐出时从 L1 缓存逐出缓存

    我有一个关于内存系统遵循的策略的基本问题 考虑具有私有 L1 和 L2 缓存的核心 在二级缓存之后 我们有一个总线 一致性流量在该总线上运行 现在 如果地址 X 的缓存线从二级缓存中逐出 是否有必要从一级缓存中逐出该地址 驱逐的原因可能是它
  • MIPS 中的影子寄存器是什么以及它们如何使用?

    当我了解 MIPS 架构时 我遇到了影子寄存器 据说它们是通用寄存器的副本 我无法理解以下内容 何时使用影子寄存器 MIPS 影子寄存器用于减少处理中断时的寄存器加载 存储开销 分配了影子寄存器组的中断不需要保存任何现有上下文来提供空闲寄存
  • Verilog 中的 If 语句和分配连线

    我试图弄清楚基于组合逻辑分配电线的基础知识 I have wire val wire x wire a wire b always begin if val 00 I want to assign x a if val 01 I want
  • Verilog 中的大括号是什么意思?

    我很难理解 Verilog 中的以下语法 input 15 0 a 16 bit input output 31 0 result 32 bit output assign result 16 a 15 a 15 0 我知道assign语句
  • Aarch64 什么是延迟转发?

    中提到了 延迟转发 Arm Neoverse E1核心软件优化指南 https developer arm com documentation swog466751 a 以及其他一些 CPU 型号的优化指南 Instruction Grou
  • 为什么无法一步读取未对齐的单词?

    鉴于 CPU 的字大小允许它寻址内存中的每个字节 鉴于通过PAE http en wikipedia org wiki Physical address extensionCPU 甚至可以使用比字大小更多的位来进行寻址 CPU 无法一步读取
  • 字大小及其指示

    请参阅下面关于各种指令集架构中的字长以及它与汇编语言的关系的问题 感谢您提供的所有帮助 先说几个事实 如有错误 请指正 处理器架构的字长表示 编辑 其中一些是错误的 请参阅下面 Seva 的帖子 每个寄存器的最大尺寸 每个内存地址的最大尺寸
  • CPU缓存:两个地址之间的距离是否需要小于8字节才能具有缓存优势?

    这似乎是一个奇怪的问题 假设缓存行的大小为 64 字节 此外 假设 L1 L2 L3 具有相同的缓存行大小 this https stackoverflow com a 15333156 8385554帖子说英特尔酷睿 i7 就是这种情况
  • 为什么x86分页没有特权环的概念?

    早在 1982 年 当 Intel 发布 80286 时 他们在分段方案中添加了 4 个特权级别 环 0 3 由全局描述符表 GDT 和局部描述符表 LDT 中的 2 位指定 在 80386 处理器中 Intel 添加了分页功能 但令人惊讶
  • CPU是如何做减法的?

    我有一些基本的疑问 但每次我坐下来尝试面试问题时 这些问题和我的疑问就会出现 假设 A 5 B 2 假设A和B都是4字节 那么CPU是怎么做的呢 A B添加 我知道 A 的符号位 MSB 为 0 表示正值 B 的符号位为 1 表示负整数 现
  • 学习 Verilog 的资源 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我是 Verilog 新手 有人可以推荐学习资源 书籍 视频 博客或任何他们有良好个人经验并帮助他们更
  • 我们可以拥有一台只用寄存器作为内存的计算机吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 寄存器是计算机中最快的存储器 那么如果我们想构建一台只有寄存器甚至没有缓存的计算机 可能吗 我什至考虑用寄存器代替磁盘 尽管它们本质上是易
  • Intel:序列化指令和分支预测

    英特尔架构开发人员手册 http www intel com content www us en architecture and technology 64 ia 32 architectures software developer v
  • Verilog:如何取绝对值

    在 verilog 中 我有一个二进制值数组 如何取减去值的绝对值 Verilog代码 module aaa clk input clk reg 7 0 a 1 9 reg 7 0 s 1 9 always posedge clk begi

随机推荐

  • 如何创建随机矩阵?

    我想创建一个随机矩阵 如 100 50 25 22 75 195 我的代码是 n 1 r 2 e 3 sup for i in range n sup1 for c in range r sup0 list random randint 2
  • 如果按下子视图的按钮如何取消 UIGestureRecognizer

    我正在努力从手势识别器中获得我想要的行为 特别是在其他手势已触发时取消某些手势 我有一个滚动视图设置为分页和每个页面中的多个子视图 我添加了一个触摸手势识别器 如果用户点击页面的右侧或左侧 则可以滚动到下一页或上一页 Add a gestu
  • AngularJS 计数器计数到目标数

    我是 Angular 的新手 想在 JQuery 中实现同样简单的函数扩展 但使用指令 据我所知 这就是应该如何完成的 有人知道准备实施吗 我的搜索最终只找到了 JQuery 解决方案 但我不知道如何将其转换为 Angular 这就是我需要
  • python函数返回函数[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何用php将文件内容转换为字节数组

    我想用PHP将上传的文件保存 插入 到数据库中 数据库字段的类型是varbinary 最后 我想要获得 VarBinary 输出 的内容 就像在 C 中读取文件然后将其存储在字节数组中并将数组插入到 VarBinary 中一样 我与数据库的
  • 在 Linux (CentOS 5.4) 中运行 jNotify 时出现问题

    我正在尝试在 centos 5 4 64 位 框中设置 jnotify 来监视目录中的文件更改 我按照说明将 libjnotify so 放入 java 库路径中 这是我的条目 java Xms64m Xmx2048m Djava libr
  • 使用mongodb+srv配置Mongo

    我在 docker 上启动 mongo 所以默认主机 localhost port 27017 用户名 root密码 example 现在我想通过连接字符串进行连接 mongodb srv root example localhost si
  • woocommerce 自定义结账字段添加费用以订购 ajax

    我试图在结账时在订单总额中添加自定义费用 我在 woocommerce 中添加了一个复选框 add action woocommerce after checkout billing form add box option to check
  • 如何用另一个子字符串替换子字符串(按索引 from..to)

    如何用其他字符串将某个字符中的子字符串替换为另一个字符 first 4 last 11 replacement show me the money replace part first last replacement gt show mo
  • 为 R 的 read_excel 包中的特定列指定列类型

    我的 Excel 文件中有大约 20 列 我正在使用 read excel 将它们作为数据帧读入 R 一列被视为 Posix 我希望它是文本 我知道提及所有列类型的类型可以解决此问题 但我想看看是否可以提及列的名称或指定仅该列应被视为文本的
  • 模式匹配中使用的抽象类型的类型不匹配

    此代码编译时出现错误 def f1 T e T T e match case i Int gt i case b Boolean gt b type mismatch found i type with underlying type In
  • 如何解决 Flutter 中的操作系统错误:权限被拒绝,errno = 13

    我想将我的文档文件存储到 存储 模拟 0 下载 我收到这个错误 未处理的异常 FileSystemException 无法打开文件 路径 storage emulated 0 Download file pdf 操作系统错误 权限被拒绝 e
  • 未设置文件名时读取 SharedPreferences

    当您在 Android 上创建 PreferenceScreen 时 您的应用程序会为设置创建默认的 SharedPreferences 文件 我想阅读这个名字 或者在不指定名字的情况下获得参考 目前我使用 SharedPreference
  • 如何设置和获取Redis中存储的对象?

    我试图在 redis 中存储一个对象 当我获取该对象时 它似乎不起作用 I tried u User new u name blankman redis set test u x redis get test x name error 我想
  • Jquery post 无法在 IE 8 或更早版本中工作

    所以这个功能在除IE以外的所有浏览器中都有效 我只能访问 IE 8 所以不能说新版本是否有效 我无权访问 PHP 或它如何调用 SQL DB 所以我不能肯定地说这是 JavaScript IE 中永远不会触发警报 post http foo
  • 用于根据源列表移动文件的 Powershell 脚本 (.txt

    我的目录中有数千个文件 pdf xls doc 它们都有相似的命名约定 类型 始终是常量字符串 即 账单或发票 帐户名称 帐号 type pdf 帐户名称 帐号 type doc 帐户名称 帐号 type xls 手头的任务是接收帐户名和帐
  • SeleneseTestCase 已弃用 - 如何调用 verify* 方法?

    当我在 Selenium IDE 中使用 JUnit 4 格式化程序生成的代码时 我收到警告 称类 SeleneseTestCase 已弃用 这是有道理的 因为它应该采用 JUnit 4 语法并使用注释 而不是从测试类派生 问题是当我修改代
  • Twitter 宝石搜索方法

    我的代码在这里 require twitter search Twitter Search new containing obama 它返回我们
  • laravel 基本查询中“允许的内存大小已耗尽 134217728 字节”

    我不知道为什么我无法让以下工作正常工作 DB table twitter hashtags gt paginate 5 每次我得到 第二个数字往往不同 Allowed memory size of 134217728 bytes exhau
  • Verilog 双向握手示例

    我正在完成一个项目 要求是处理器内部功能单元之间的双向握手 我知道它是什么 但是有没有任何 标准 或一个简单的例子 我唯一能想到的就是两个单元之间 当它们之间有一条数据线并且当 X 发送到 Y 时 会给出一个单独的 发送 信号 当 Y 接收