FPGA/Verilog
文章平均质量分 64
yangzhiyuan0928
这个作者很懒,什么都没留下…
展开
-
输出端口设为reg与wire的区别
之前一直没在意这方面的细节,一天在做时序调整时发现输出端口设为wire与reg有很大的区别,现在准备记录下来,当做一点积累吧!原创 2016-05-10 22:04:03 · 1538 阅读 · 0 评论 -
Verilog语法中parameter与localparam的区别
parameterlocalparam原创 2016-05-26 15:42:27 · 65386 阅读 · 6 评论 -
怎么快速看懂别人写的module和ipcore
纯粹是经验之谈,当然了,我依然是菜鸟一枚。之前看别人写的module,或者是别人封装好的ipcore(没有写使用文档)时,有点盲人摸象的感觉,特别是当工程很大时。现在记录一下最近关于看别人写的工程代码的一些经验: (1) 首先把握整个工程的层次结构,当工程包含多个.v文件时,一般都会采用分层设计的思想,这时就要分析好整个工程的层次结构。先从最上层模块分析,看在最上层module上例化了哪些m原创 2016-05-30 20:38:39 · 906 阅读 · 0 评论 -
接口逻辑设计
之前写DDS那部分时,对于SPI接口琢磨了好久,当然了,首先想得到的状态机,控制DDS输出的数据送至后端DA。将整个数据传输过程分解成四个状态: IDLE、WR_START、WR_DATA、STOP,根据事件猝发每个状态的跳转,例如IDLE -> WR_START的跳转条件是out_en = 1,这种设计思想是最直接的,但有的时候时序调整很麻烦(比如多了或少了时钟周期),直到某天,看了ADI公司针原创 2016-05-30 20:59:09 · 2196 阅读 · 0 评论 -
功能仿真时发现一个很奇怪的东西
//一个普通的always语句,但ad_sclk有点特殊 always @(posedge ad_sclk) begin if(shift_cnt == 5'd17) shift_cnt <= 0; else shift_cnt <= shift_cnt + 1'b1; end功能仿真截图:红线圈的地方不是ad_sclk的上升沿,shift_cnt就不应该发生原创 2016-06-27 11:09:27 · 625 阅读 · 0 评论 -
跨时钟域数据同步
在一些较复杂的逻辑设计中,通常会涉及到多个时钟域,在跨时钟域设计时,要保证数据同步,可采用如下策略使得设计满足时序要求:(1) 采用双端口RAM或异步时钟FIFO(2) 利用多级寄存器缓存数据 最近在做数据采集模块时,关于trig_in信号的处理就是这样处理的。trig_in是一个脉冲信号,由DDS模块产生,在DDS模块中,每个信号周期的起始都会产生一个周期同步脉冲,也就是t原创 2016-07-25 20:47:35 · 2898 阅读 · 0 评论 -
基于Zynq的数据采集系统设计与调试(三) —— FIFO的使用
前言: FIFO是数据采集系统中必不可少的环节,AD采回来的数据要送至ARM/DSP处理,或将采回来的数据写到本地,都需要解决读写速度匹配问题,解决这类问题,首选FIFO。在我们的设计当中,使用的是ADI公司的AD7989,18bit,100KSPS,采用三线SPI数据传输模式。采用两级FIFO,第一级FIFO用于缓存AD采样点数据,第二级FIFO用于DMA数据传输。一. F原创 2016-07-15 23:21:56 · 18040 阅读 · 3 评论 -
基于Zynq的数据采集系统设计与调试(二) —— AD接口
前言: 本设计中使用AD的是ADI的AD7989-1,AD7989-1是18-bit,逐次逼近型模数转换器。支持CS模式、链模式。本设计中采用3线CS模式,此模式常用于连接到SPI接口的数字主机,关于AD7989的详细信息请参考芯片手册:AD7989-1_7989-5.pdf一. AD接口 1)3线CS模式的时序图如下: 2)时序规格如下:原创 2016-07-17 11:51:32 · 10277 阅读 · 1 评论 -
Vivado下产生AXI-Lite Ipcore及AXI-Lite源代码解析
一. AXI-Lite接口Ipcore的生成Xilinx开发工具EDK和Vivado都可自动生成AXI-Lite、AXI-Stream主从模式接口。关于生成Ipcore的过程可参考下面这两篇文章,这里就不在赘述: http://comm.chinaaet.com/adi/blogdetail/37170.html http://www.cnblogs.com原创 2016-09-21 11:15:39 · 10689 阅读 · 6 评论