VHDL 初级
Somnus_z
这个作者很懒,什么都没留下…
展开
-
ADC_DAC综合仿真验证
实验器材ADC128S052DAC TLV5618Quartus ii 18.0AC620硬件开发板实验要求通过ISSP向DAC输入16位数据,控制DAC输出的通道以及工作模式,通过ISSP控制ADC的输入通道选择,并观察ADC的12位输出数据是否和DAC的输入的电压大小在误差范围内,并将ADC的输出数据按十进制显示到数码管中。代码实现DAC/ADC,数码管的代码实现DAC/ADC的代码实现以及原理在之前的文章已经讲了,这里就不再赘述。ADC原理及代码DAC原理及代码数码管的原理及代原创 2020-11-11 18:07:31 · 1351 阅读 · 0 评论 -
线性序列机与串行接口ADC驱动设计与验证 VHDL
(已通过板级验证)实验工具AC620实验开发板Quartus ii 18.0VHDL实验原理下图为ADC器件的管脚:IN0-IN7为八个输入的通道,可以选择任意通道作为输入,本次实验每次只选择一个通道。SCLK为时钟输入,范围从3.2MHZ~8MHZ(AC620参考时钟为50MHZ,因此采用八分频时钟,SCLK=6.25MHZ)。DIN为输入信号,输入控制通道地址信号,SCLK的上升沿采样输入DOUT为输出信号,在SCLK的下降沿输出,每次输出一位数据,一次转换从高到低总共输出12位数字原创 2020-11-11 15:53:58 · 860 阅读 · 0 评论 -
线性序列机与串行接口DAC驱动设计
实验要求通过TLV5618DAC芯片和线性序列机(LSM)实现DAC驱动,并通过ISSP工具输入希望输出的电压值,控制FPGA进而操作TLV5618芯片输出对应的电压值。start: 脉冲信号,标志着DAC转换的开始。DAC_DATA[15:0]: 输入的数字信号SCLK: TLV5618的SCLK信号DIN: TLV5618的DIN信号CS_N: TLV5619的CS_N信号DAC_state: DAC的状态。0:工作;1:空闲conv_done:标志着一次DAC转换完成实验原理TL原创 2020-11-11 11:13:05 · 1008 阅读 · 0 评论 -
Quartus ii FIFO ip核的应用与仿真
原理FIFO: first in first outFIFO分为 signal#mermaid-svg-HnZIJHpAv2r1AJF7 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-HnZIJHpAv2r1AJF7 .label text{fill:#333}#mermaid-svg-HnZIJHpAv原创 2020-09-01 23:43:19 · 2441 阅读 · 1 评论 -
Quartus ii 中ROM ip核的应用
ROM: read only memory: 掉电不丢失数据RAM可以被配置为ROM实验内容:将一组固定数据(三角波)存储在FPGA中使用IP核构建的片上ROM中,开发板上电后,系统开始从ROM中读取数据,通过并口输出。用signalTap II 实时抓取并口上的数据,显示三角波形。用In system memory content editor工具在线更改ROM中的数据(改为正弦波),用signalTap再次观察。Quartus ii 实现生成三角波.mif文件: triangula原创 2020-08-30 10:35:37 · 7233 阅读 · 0 评论 -
UART+双口RAM的使用
实验器材AC620开发板、 串口猎人、 Quartus ii实验内容:通过PC机串口助手发送数据,FPGA中 UART_RX接收模块接收数据,并将其存储到双口RAM中,然后读取双口RAM中存储的数据,通过UART_TX连续发送数据到PC机中显示。通过按键控制是否发送数据,按键一次,开始发送数据,再按一次停止发送数据。实验原理dual port RAM通过Quartus ii 中的 Tools --> IP Catalog 找到RAM 2 port, 然后配置为一个256 字节的存储器(其原创 2020-08-29 13:35:42 · 1467 阅读 · 0 评论 -
UART 接收模块
(已通过板级验证)实验要求:在Quartus ii 中利用In system sources and probes(ISSP) 查看UART接收模块接收到的数据,串口接收到的数据由PC机发出。baud_set[2:0]: 波特率选择信号rs232_rx:串行数据输入data_byte[7:0] : 并行数据输出rx_done: 脉冲信号,接收结束信号实验原理:一般在实验室环境下,信号比较稳定,不存在强电磁干扰。 但是在工业环境下,信号会有一定的错误,因此我们采用过采样的办法避免干扰。 对每原创 2020-08-24 16:07:52 · 1237 阅读 · 1 评论 -
modelsim仿真问题
仿真出现以下问题Error (suppressible): (vsim-SDF-3250) dpram_8_1200mv_85c_vhd_slow.sdo(0): Failed to find INSTANCE ‘/NA’.Error (suppressible): (vsim-SDF-3894) : Errors occured in reading and resolving instances from compiled SDF file(s).Error (suppressible): (vs原创 2020-08-24 13:15:14 · 2713 阅读 · 0 评论 -
数码管的动态扫描实现
实现FPGA驱动数码管动态显示,板级调试时通过in system sources and probes(ISSP)输入想要显示的数据。八段数码管的驱动原理:八段数码管的结构如下图所示,七段数码管就是少了h那个点。数码管分别共阳极和共阴极结构:共阴极就是一个数码管中的8段LED阴极全部接在一起,如上图左侧所示,共阳极则是将LED的阳极接到一起。本实验所用的开发板为AC620,采用共阳极结构。如果要让LED灯亮,那么对应的LED灯的阴极要接低电平。也就是说如果要显示数字‘0’,输入的数据应该为:“11原创 2020-08-12 18:02:27 · 7937 阅读 · 0 评论 -
BCD计数器
为了方便输出数据到硬件开发板中,设计了BCD码计数器实验原理如: 输出数据158到数码管的时候需要:158 / 100 = 1 百位158 % 100 =58 58 /10 =5 十位158/10 = 8 个位除法和取余的运算消耗的资源都比较大,为了节约资源,可用BCD计数器(每十个数进1),如下图所示,每四位分别表示百位,十位,个位。代码实现4位BCD码计数器的实现// 端口名称 clk : in std_logic;原创 2020-08-07 22:23:55 · 3221 阅读 · 0 评论 -
FPGA亚稳态状态检测边沿
亚稳态的原理如上图所示,当时钟上升沿来的时候,数据恰好改变,这个时候输出的结果就无法确定是0/1,寄存器会经过一段时间的抖动然后输出一个结果(无法确定是正确还是错误)亚稳态检测边沿的解决办法通过三个寄存器,数据的抖动会消失,从而得到稳定的数据输出(数据同样不确定是否正确)亚稳态检测边沿的原理:当寄存器抖动之后输出为0时,如下图所示,通过两个寄存器,就可以消除抖动,并且,在几个时间周期之...原创 2020-04-06 21:16:55 · 434 阅读 · 0 评论 -
按键消抖原理及VHDL代码实现
按键消抖原理及VHDL代码实现按键抖动原理如上图所示,当我们按下FPGA上的button键之后,我们理想的状态如黑线所示,但是实际的情况是如红线所示,会有几次的来回抖动,然后才会变得稳定。这个问题就会导致FPGA检测到数次1,这样可能就会运行数次操作,从而得到错误的结果。按键消抖原理因为按下FPGA的按键时,弹簧片最低震动频率不会低于50 HZ,所以,两次下降沿出现的时间差不会超过20...原创 2020-04-05 16:49:33 · 9555 阅读 · 1 评论 -
UART 发送模块VHDL实现
UART 原理 以及VHDL实现Uart: 异步串口通信Uart 管脚Uart 关键参数以及时序图实现的逻辑功能:VHDL 代码实现Baud_set的实现sclk的实现数据传输的实现:仿真结果:start 仿真结果:cnt再次计数到1![在这里插入图片描述](https://img-blog.csdnimg.cn/20200403175440950.jpg?x-oss-process=image/...原创 2020-04-04 15:54:37 · 3259 阅读 · 1 评论