Verilog项目合集
文章平均质量分 93
Verilog项目合集
刘清帆
THU
IC黑铁入门ing
欢迎交流~
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【协议项目之 I2C】(一) 基本时序与实现
I2C协议(集成电路总线)使用两根线SDA和SCL实现数据传输,其连接如下图所示,总线上通过上拉电阻可以挂载各种低速外设,例如传感器等。使用I2C,可以将多个从机(Slave)连接到单个主设备(Master),并且还可以有多个主设备(Master)控制一个或多个从机(Slave)。原创 2023-03-31 13:42:07 · 2763 阅读 · 1 评论 -
【数集项目之 MCDF】(五) 最终整合:MCDF顶层文件
因此我在代码里面加入了`include语句,而如果是其他集成开发工具,会通过用户菜单窗口将代码添加进来,就不需要`include语句。需要注意的,为了代码的方便管理,我将每个子模块都放在一个文件夹内,因此`include需要不能不指明路径(因为这只适用于引用文件和被引用模块在同一文件夹下的路径),因此include如下。根据结构图的连线,在顶层模块中引入前面的子模块,根据使用的工具不同,使用的方法略有区别。当然,由于握手机制等一些信号检查在顶层模块中,更容易进行检查,也容易进行调整各个模块的协作关系。原创 2022-12-14 13:56:06 · 1829 阅读 · 0 评论 -
【数集项目之 MCDF】(四) 整形器 formatter
因为设计文档说相邻数据包之间间隔至少1个时钟周期,而上下级握手是需要时间的,因此不需要再额外空出一个周期。(必须是就绪的,有包可以发送的)。(因为之前的设计还没有涉及到握手时序,波形不满足,所以我又修改了一下,现在slave中波形就满足了时序关系,如下图黄色波形所示)相邻的数据包之间应至少有一个时钟周期的空闲,即fmt_end变为低电平后,至少经过一个时钟周期fmt_req才可以再次置高。仿真结果如下,同样地,因为涉及到上下级时序配合,因此此处也省略波形分析,将在最后的MCDF顶层仿真中进行详细分析。原创 2022-12-13 15:32:51 · 1134 阅读 · 0 评论 -
【数集项目之 MCDF】(三) 仲裁器 arbiter
有了综合优先级生成和比较,这样我们就能找出优先级最高的通道了,每次arbiter或者更高级请求发送数据包时,我们只要比较一下当前优先级最高的通道(刷新综合优先级),然后直接选通对应通道,将各种信号按照文档中给的对应关系进行wire连接就可以了。表示,而考虑到复位情况不能选择任何一个通道(因为可能3个通道都没接收足够数据发送),并且对于这么多arbiter输出信号复位赋值语句较多,因此这里设置一个。根据设计文档,我们知道从输入总共有3个通道,而这三个通道很有可能都接收到数据可以进行发送。原创 2022-12-12 22:17:50 · 2211 阅读 · 0 评论 -
【数集项目之 MCDF】(二) 从输入端 slave_FIFO
代码主体通过两个always实现,分别是读always和写always,不同于控制寄存器,FIFO是可以同时读写的。但是,上一章也提到,由于位宽限制,除了64之外的余量都按照其本身表示,而64表示为63.综合以上逻辑,代码如下所示。的作用是跟外界(即发送数据的模块,这个不再我们设计的范围内)通信,告诉它这个数据并没有接收,让其重新发送。由于除了从端的输入复位之外,还有通道使能和复位有关,因此FIFO的复位信号应该是以上两个信号相与。注意读写的条件,除了读写有使能之外,还要满足读的时候非空,写的时候非满。原创 2022-12-12 17:10:39 · 1079 阅读 · 2 评论 -
【数集项目之 MCDF】(一) 控制寄存器 control_register
本项目为MCDF数据整形器设计,所有的参考代码见我的github其中设计的参考文档见github文件中的MCDF修订版.docx文件。选择的工具链是,相关工具的安装与环境配置就不介绍了,可以参考其他文章。注意:不同的工具链代码可能有区别,例如一些集成开发环境不需要书写`include,而是直接将代码加入工程作为替代MCDF模块按照子模块划分,总共分为了、slvae_FIFO、arbiter、formatter这几个子模块和MCDF这个顶层模块。本章首先从控制寄存器。原创 2022-12-12 11:52:12 · 2105 阅读 · 3 评论
分享