根据上一篇生成的IP核,例化之后如上图,Local开头的数据是用户侧数据,其他数据暂时不用纠结,不用管。 这些是需要关注的信号,但是初学阶段很难对这些信号形成具体的概念,这里参考明德扬的代码进行二次封装。 封装之后只需要关注 上面这9个信号,当user_wdata_rdy为高电平的时候可以写入数据, ...
分类:
其他好文 时间:
2019-06-11 01:12:53
阅读次数:
141
模块划分概述 模块划分,顾名思义是指模块的划分。但是,明德扬提出的模块划分,是广义的“模块划分”。后续所提及的“模块划分”,不单单指模块的划分,还包括模块划分好后,模块的端口及模块之间数据流向的确定。5.1.1 模块划分原则明德扬的模块划分原则有两条:原则一:一个功能一个模块。按功能划分模块是模块划 ...
分类:
其他好文 时间:
2019-05-20 10:26:42
阅读次数:
124
Verilg是硬件描述语言,顾名思义,就是用代码的形式描述硬件的功能。而我们最终是要在电路上实现该功能的。当Verilog描述出硬件功能后,我们需要综合器对Verilog代码进行解释,将代码转化成实际的电路来表示,最终实际的电路,我们称之为网表。这种将Verilog代码转成网表的工具,就是综合器。上图左上角是一份verilog代码,该代码描述了一个加法器功能。该代码经过综合器解释后,转化成一个加法
分类:
其他好文 时间:
2018-10-10 16:08:13
阅读次数:
157
本文设计思想采用明德扬至简设计法。上一篇博文中定制了自定义MAC IP的结构,在用户侧需要位宽转换及数据缓存。本文以TX方向为例,设计并验证发送缓存模块。这里定义该模块可缓存4个最大长度数据包,用户根据需求改动即可。 该模块核心是利用异步FIFO进行跨时钟域处理,位宽转换由VerilogHDL实现。 ...
分类:
系统相关 时间:
2018-10-07 22:05:03
阅读次数:
255
本文设计思想采用明德扬至简设计法。由于本人项目需要进行光纤数据传输,为了保证通信质量要对数据进行校验。在校验算法中,最简单最成熟的非CRC校验莫属了。 得出一个数的CRC校验码还是比较简单的: 发送端将移位补零后数据的低K位0替换成CRC校验码组成新的数据发送出去,接收端对带有校验码的数据对同样的G ...
分类:
编程语言 时间:
2017-10-27 20:39:29
阅读次数:
227
本文设计思路源自明德扬至简设计法。在之前的几篇博文中,由于设计比较简单,所有的功能都是用verilogHDL代码编写实现的。我们要学会站在巨人的肩膀上,这时候就该IP核登场了! 说白了,IP核就是别人做好了的硬件模块,提供完整的用户接口和说明文档,更复杂的还有示例工程,你只要能用好这个IP核,设计已 ...
分类:
其他好文 时间:
2017-10-06 15:53:06
阅读次数:
299
总结出来五个常用的模块交互架构,读者在进行项目设计时,可结合明德扬模块划分原则,参照“模块划分常用架构”进行模块划分。 §6.1 直接交互架构 直接交互不需要模块B反馈,模块A直接发送数据。一般应用于下游模块处理速率高于上游模块发送速率的场景。框图如图6-1。 图6-1 直接交互架构 直接交互架构的 ...
分类:
其他好文 时间:
2017-04-30 12:44:53
阅读次数:
165
一、模块划分概述 模块划分,顾名思义是指模块的划分。但是,明德扬提出的模块划分,是广义的“模块划分”。后续所提及的“模块划分”,不单单指模块的划分,还包括模块划分好后,模块的端口及模块之间数据流向的确定。 二、模块划分原则 明德扬的模块划分原则有两条: 原则一:一个功能一个模块。 按功能划分模块是模 ...
分类:
其他好文 时间:
2017-04-30 12:30:28
阅读次数:
227