- 博客(14)
- 问答 (2)
- 收藏
- 关注
原创 FPGA之DDR3读写测试实验
FPGA之DDR3读写测试实验一.实验任务本次的实验任务是先向DDR3的存储器地址0-999分别写入数据0-999;写完之后再读取存储器地址0-999的数据,若读取的值全部正确则LED灯亮,否则LED灯闪烁。二.介绍DDR SDRAM的最大特点是双沿触发。接下来是部分信号的定义:(1)app_addr : 用户地址输入,这是MIG IP 核根据具体的物理芯片,整合给用户使用的地址空间。(2)app_rdy :MIG IP核读写命令接受准备完成(3)app_wdf_wren :MIP I
2021-02-13 09:49:13 4623 19
原创 FPGA之EEPROM实验
FPGA之EEPROM实验一、简介EEPROM,即电可擦除可编程只读存储器,本次实验所用的是AT24C64型号,其存储容量为64Kbit,内部分为256页,每一页32字节(Byte),共有8192个字节,且其读写操作都以字节为基本单位。而关于如何对AT24C64进行读写操作呢?AT24C64采用两线串行接口的双向数据传输协议–I2C协议来实现读写操作,因此本次实验的重点则是了解I2C协议。(本次实验基于正点原子所设置的实验)实验任务:本次实验的任务是先向EEPROM的存储器地址0-255分别写入数据
2021-02-05 10:24:56 2132 2
原创 FPGA中关于上升沿和下降沿检测
FPGA中关于上升沿和下降沿检测一 介绍在学习FPGA的过程中,我们有时候会看到在所学例程上会有关于检测信号下降沿或者上升沿的代码,然后通过检测上升沿和下降沿触发使能信号从而进行接下来的操作。比如下降沿检测:assign flag = (~uart_txd_d0) && (uart_txd_d1);但是可能却不知道为什么是这样写出来的,而选择去死记硬背,反正我是记不住了,最好还是搞明白,那么接下来我们就来分析一下。二 分析本次实验已下降沿为例,上升沿则是同理。首先要明确的
2021-01-12 10:39:59 3769 1
原创 FPGA小白之UART串口实验复习
FPGA小白之UART串口实验复习一 具体思路首先要知道串口通信分为两种方式,即同步串行通信和异步串行通信。而UART采用的是异步串行通信的方式,UART串口通信需要两根信号线来实现,一根用于串口发送,一根用于串口接收。一帧数据由四部分组成:起始位,数据位,奇偶校验位和停止位,本次实验中我们有一位起始位,起始位为0,八位数据位,没有设置奇偶校验位以及1位停止位,停止位为1。接着是波特率,因为本次实验会设及到波特率,因此大致给出解释,波特率即串口通信的速率,它表示每秒传输二进制数据的位数,本次实验波特
2021-01-11 10:46:31 627 3
原创 FPGA小白之FIFO复习
FIFO复习总结一.具体思路首先介绍一下FIFO,于我而言,FIFO的作用主要有两个,一个是用于数据的缓存,另一个则是用于跨时钟域的数据传输,比如我要做一个摄像头的实验,摄像头采集到的数据我们要传给DDR3存储器,再从DDR3存储器读出输出到LCD屏幕上进行显示,那么摄像头的时钟频率和DDR3读写的频率完全是天差地别,如果这时候我们将数据塞进去,就可能会造成传非所收的状态,这个时候就需要FIFO来进行一个调整平衡。那么FIFO介绍完了,重点还是要考虑如何去理解和完成这一实验。首先我们要考虑的事情是要
2020-12-30 21:21:54 1054 3
原创 Variable ‘uart_done‘ should not be used in ouput port connection
1.出现了should not be used in output port 这种错误怎么办前几天再做一个LCD上显示上位机发送数字的实验的时候,再仿真顶层模块的时候出错,错误就如上所示,它说我这个信号不能用作输出端口?我当时就懵了,我反复检查却也没有看出问题,最后我才发现我犯了一个非常低级的错误–即在顶层定义的时候,我将uart_done(出问题的信号)的变量类型设为reg了,也就是我是reg uart_done这个信号的,这样做是错误的,哪怕你在接收模块确实定义的是reg类型,但是在顶层模块的时候,它
2020-09-01 16:32:16 10586 8
原创 FPGA小白养成记--RGB--LCD字符和图片显示实验
1.原理本次实验的目的是在LCD上显示一张自己喜欢的图片和自己的名字,相对于上一次的彩条实验,只有显示模块是不同的,其它的模块可以参考彩条实验的代码,此处不再赘述。相比于彩条实验的系统框图,本次实验的实验框图还需要加上一个ROM的部分,因为图片的像素数据比较多,我们需要用ROM来存储。本次实验需要用到的工具:VIVADO,PCtoLCD(取模),PicToLCD(实现将图片到COE文件的转换)此处要注意的是区分Bit和Byte的概念:Bit意为‘位’,或者说‘比特’,是计算机运行的基础Byte意
2020-08-28 10:14:23 2550 2
原创 FPGA小白养成记--RGB-LCD彩条显示实验
1.原理本次实验的目的是在LCD上显示五条不同颜色的彩带,本次我们采用的像素格式是RGB888,一个像素点为24Bit。接下来是关于LCD如何显示一帧图像呢?我们是采取从左往右,从上往下的方式扫描每个像素点,并表明每个像素点对应的颜色。根据行显示的时序图,我们可以看到,整个构成并不只是由HSPW构成,它还由HBP+HOZVAL+HFP构成;场信号是一样的。还有很多细节就不赘述了。那么我们主要要实现一个什么样的东西呢?首先,我们接上LCD屏幕的时候,要能够自动判断出LCD的型号,也就是分辨率,从而可以
2020-08-27 22:09:21 1819 2
原创 FPGA小白养成记--FIFO实验
FIFO意为先进先出,而在FPGA中使用的FIFO一般指的是对数据的存储具有先进先出的特性的一个缓存器,其作用自然是缓存数据,或者用于跨时钟域的信号传递。但是有个很重要的地方需要注意,它和RAM或ROM有着一个很重要的区别:没有外部读写地址线,而是采用顺序写入数据,顺序读出数据的方式,使用起来虽然很方便,但是缺点也就是没有办法像RAM或者ROM一样可以由地址线决定读取或写入某个指定的地址。1.设计思路那么我们大概需要两个模块,一个顶层模块,一个fifo的读写模块。顶层模块不用多说,fifo的读写模块中
2020-08-16 19:33:41 2114 2
原创 FPGA小白养成记-RAM实验
RAM即随机存取储存器,它可以随时把数据写入任一指定地址的存储单元,也可以随时从任一指定地址中读出数据,频率决定了它的读写速度。存放程序以及程序执行过程中产生的中间数据,运算结果等是RAM的主要用途。今天的实验就是用VIVADO来做RAM实验。1.实现思路我们打算分两个模块来写,一个是顶层模块,一个是负责读写的模块。设置IP核的步骤就不说了。那么首先我们思考一下如何来写RAM的读写模块。首先读数据和写数据要有(ram_wr_data,ram-rd_data),不然怎么读和写,其次读写地址也要有(
2020-08-15 15:16:56 1844 4
原创 FPGA小白养成记--按键消抖实验
今天做一个按键消抖的实验,要求如下:判断出按键是真正的按了下去从而触发蜂鸣器,而要消除抖动(20ms以上算是按键按下,否则算做抖动)原理:当我们按按键的时候,从而触发某些功能,然而有时我们明明没有按下按键,为什么也会触发功能呢?其原因就是抖动,导致抖动的因素有很多种,比如板子受到外力抖了抖之类的,都可能导致误触发功能。那么消抖就成了不可缺少的一环,接下来的问题是:我们如何消抖呢?我们假设未按键时,正常电平为高,而当有按键按下或者有抖动时,电平为低,那么我们就只需要判断低电平的时间是否达到了20ms,从而
2020-08-06 14:05:18 1244 2
原创 FPGA小白养成记--流水灯实验(反思部分)
流水灯实验调试过程:在我尝试写代码的时候,自己写起来虽然自我感觉良好,可是看波形却发现逻辑纰漏频出,错误不断,最终改了多遍代码才调试成功。下面是一些我能回忆起来的一些错误和对代码的一些感悟。源码:always @(posedge sys_clk or negedge sys_rst_n) beginif(sys_rst_n0)cnt<=0;else if(cnt25’d249)cnt<=0;elsecnt<=cnt+1;endalways @(posedge sys_
2020-07-28 14:48:50 1511 1
原创 FPGA小白养成记--流水灯实验
FPGA小白入门学习之流水灯实验开始整体思路与方案代码部分调试开始本人是一个FPGA小白,因为兴趣从而开始接触FPGA,我将会把我每次的实验过程和心得分享给大家,希望一起进步,如果有什么错误的地方,还希望批评指正。下面是我的第一次实验:LED流水灯实验使用软件:VIVADO整体思路与方案LED流水灯闪烁实验:要求:四个LED灯轮流闪烁,每次间隔0.5S思路:首先要实现LED灯轮流闪烁,则当第一个0.5S到来时,LED0开始闪烁而其它灯灭;当第二0.5S到来时,LED1开始闪烁,以此类推。那
2020-07-27 22:33:01 860 3
空空如也
关于Siam网络进行目标检测跟踪的一个小问题
2022-05-09
PAL制为什么要用奇偶场
2021-05-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人