
HDL专栏
文章平均质量分 81
HDL Code
锤王马加爵
没啥可说的
展开
-
【原创】Verilog实现常见数据结构计划(一)顺序线性表
引言数据结构不仅仅是一门软件基础课,同时也是一门硬件基础课,可以说是数字设计的入门课。数据结构里详细介绍了链表、队列、堆栈、哈希等基本底层操作,这些底层操作在一些高级语言中都被封装好了,但是在做硬件设计时都是需要考虑的,如内存分配和存储问题,在硬件设计中是没有编译器来帮我们完成的,都需要一步一步设计来完成。这里将分几期来演示使用Verilog实现常用数据结构的操作,本文实现Verilog实现顺序线性表的插入操作。一、顺序线性表顺序表的定义也是用一段地址连续的存储单元一次存储线性表的数据元素,而原创 2021-02-05 23:50:44 · 2540 阅读 · 2 评论 -
【新手向】Verilog中 判断语句 的执行时序总结
一、时序逻辑有两个always块,一个作为计数器使寄存器cnt自加,另一个判断cnt的值并作出响应。always块中的时序逻辑电路基本拓扑如下图所示,由两个触发器级联构成。上述两个always块的过程都是在同步时钟下进行的时序逻辑电路。由触发器的特性可知,在时序电路1中判断时序电路2的状态值,判断的永远是时序电路2的上一个时钟周期所对应的值。所以可以由此结论推断各判断语句对应的触发时间。(cnt初始等于0,flag高电平表示事件触发,低电平表示未触发。)if(cnt==N).原创 2021-01-18 17:07:16 · 5609 阅读 · 2 评论 -
【原创】Xilinx 同步FIFO IP核时序仿真说明(附testbench代码)
引言最近在研究硬件tcp/ip协议栈,需要用到同步FIFO缓存电脑发来的以太网数据。以前用的Altera家的芯片,还没仔细研究过Xilinx的同步FIFO IP核的时序,为了避免以后采坑,简单分析一下其操作时序。软件环境:Vivado 2019.2仿真环境:Vivado Simulator官方手册:PG057一、时序分析大家知道一个数据从一个触发器输入端传输到另一个触发器输出端需要两个时钟周期,那么写进FIFO的第一个数据是wr_en上升沿时的数据还是wr_en上升沿后的下一个数据呢?查看一下原创 2021-01-13 19:48:42 · 5208 阅读 · 0 评论 -
【原创】Xilinx_7Series_MIG控制器驱动DDR3
一、项目说明:平台:XC7K325T板卡DDR3:两片MT41J256M16TW-107,共1GB,数据总线32bit环境:Vivado 2019.2IP:Memory Interface Generator(MIG 7 Series)官方手册:ug586 (7Series Devices Memory Interface Solutions v4.2)二、DDR3本调试使用了两片镁光的 MT41J256M16TW-107 DDR3芯片:单片数据总线为16bit、深度32M、8个Ban...原创 2020-11-20 22:27:51 · 12667 阅读 · 3 评论 -
【原创】Xilinx 的 RAM IP核调用与仿真(一)
Xilinx 的 RAM IP核分为三种:单口RAM(Single Port RAM)、伪双口RAM(Simple Dual Port RAM) 和真双口RAM(True Dual Port RAM)。上图为单口RAM;拥有一组地址线、一组读数据线和一组写数据线,且读写操作共用同一个时钟,在同一时刻要么写数据要么读数据。上图为伪双口RAM;拥有一组写数据线和一组读数据线,且两个数据总线各配一组地址总线 ,读和写端各有一个时钟(类似于FIFO),内存空间共享,可以同时读写。...原创 2020-11-14 02:36:00 · 10727 阅读 · 3 评论 -
【原创】异步FIFO设计原理详解 (含RTL代码和Testbench代码)
FIFO在硬件上是一种地址依次自增的Single Dul RAM,按读数据和写数据工作的时钟域是否相同分为同步FIFO和异步FIFO,其中同步FIFO是指读时钟和写时钟为同步时钟,常用于数据缓存和数据位宽转换;异步FIFO通常情况下是指读时钟和写时钟频率有差异,即由两个异步时钟驱动的FIFO,由于读写操作是独立的,故常用于多比特数据跨时钟域处理。本文仅讨论异步FIFO的设计。 因为FIFO的硬件本质是一块Single Dul RAM,无论它的内部结构和原理如何复杂,最核心的...原创 2020-11-08 16:17:02 · 34580 阅读 · 37 评论 -
【原创】Verilog编写 “1101 序列检测器
序列检测器是时序数字电路中非常常见的设计之一。它的主要功能是将一个指定的序列从数字码流中识别出来。这里给出一个“1101”序列检测器的Verilog实现和Testbench代码。★设计目标:“1101”序列检测器★EDA:Quartus 15.0★仿真软件:Modelsim 10.1c本序列检测器共有4个bit位,每个bit占用一个状态,再加上开始和结束状态,故使用格雷码定义6个状态:// 序列检测器 状态编码(格雷码)localparam SEQ_IDLE = 3'b000;lo原创 2020-10-18 15:18:30 · 16516 阅读 · 2 评论 -
【原创】详解Verilog一段式状态机实现按键消抖(含打包成IP核教程)
玩过单片机的都知道,机械按键在按下和松开的一段时间内会在高低电平间来回振荡数次。为了准确可靠地检测按键是否被触发,则需要对按键按下和松开的过程进行消抖处理。 ...原创 2020-10-17 15:19:27 · 1844 阅读 · 0 评论