FPGA学习
文章平均质量分 83
FPGA学习过程点点滴滴的积累
panhongfeng111
记录学习FPGA过程,学习中遇到的问题,学习各种接口,高速传输,也会将自己所做的留下来,敬请大家多多交流。
展开
-
基于OV7670摄像头图像实时边缘检测
目录一、总体系统框图二、Sobel边缘检测算法原理三、算法实现四、代码1、RGB转Ycbcr代码2、边缘检测代码五、仿真测试1、移位寄存器仿真2、卷积操作六、上板验证一、总体系统框图如下图所示实时图像边缘检测的整体系统框图:在本人前面博客中有个专栏《OV7670摄像头显示》,本专栏主要是对OV7670摄像头在FPGA平台上实现图像采集和显示。本次对于预想边缘检测的工程是在此代码基础上进行拓展延伸的。如上图所示,其中红色部分就是添加的部分,后边会补.原创 2021-04-20 19:28:21 · 3042 阅读 · 14 评论 -
总:基于FPGA的OV7670摄像头显示
目录前言:一、整体系统设计二、各部分模块设计1、时钟模块2、OV7670初始化模块3、DVP协议数据流模块4、写FIFO模块5、读FIFO模块6、写FIFO控制模块7、读FIFO控制模块8、SDRAM控制模块9、VGA控制模块10、顶层模块三、仿真测试四、上板验证五、总结前言:这个专题的博客中写的都是关于OV7670摄像头显示所需要的模块,并对每个模块进行仿真验证,最后再对每个模块进行整合,本篇就是对整个摄像头系统进行整合和汇总。.原创 2020-10-22 13:46:55 · 9923 阅读 · 7 评论 -
quartus编译报错:Error (176310): Can‘t place multiple pins assigned to pin location Pin_F16 (IOPAD_X34_Y1
整体错误信息:Error (176310): Can't place multiple pins assigned to pin location Pin_F16 (IOPAD_X34_Y18_N21) Info (176311): Pin VGA_VS is assigned to pin location Pin_F16 (IOPAD_X34_Y18_N21) Info (176311): Pin ~ALTERA_nCEO~ is assi...转载 2020-09-28 10:10:32 · 8764 阅读 · 7 评论 -
基于FPGA的DVP协议实现标准图像数据流转换(OV7670摄像头)
目录一、什么是DVP?二、OV7670摄像头的DVP协议时序三、RTL设计一、什么是DVP?DVP(Digital Video Port) 是传统的sensor输出接口,采用并行输出方式,d数据位宽有8bit、10bit、12bit、16bit,是CMOS电平信号(重点是非差分信号),PCLK最大速率为96MHz,接口如下图:PCLK:pixel clock ,像素时钟,每个时钟对应一个像素数据; HSYNC:horizonal synchronization,行同步...原创 2020-09-26 11:24:14 · 10434 阅读 · 1 评论 -
基于FPGA OV7670摄像头初始化配置
一、OV7670摄像头简介OV7670/OV7171 图像传感器,体积小、工作电压低,提供单片VGA摄像头和影像处理器的所有功能。通过SCCB 总线控制,可以输出整帧、子采样、取窗口等方式的各种分辨率8位影响数据。该产品VGA图像最高达到30帧/秒。用户可以完全控制图像质量、数据格式和传输方式。所有图像处理功能过程包括伽玛曲线、白平衡、饱和度、色度等都可以通过SCCB接口编程。OmmiVision 图像传感器应用独有的传感器技术,通过减少或消除光学或电子缺陷如固定图案噪声、托尾、浮散等,提高图像质...原创 2020-09-25 17:33:46 · 8113 阅读 · 4 评论 -
FPGA SDRAM接口设计(四)板级验证
前面已经对SDRAM原理及控制器进行了讲解,以及仿真,下边将进行板级验证。一、验证方法使用的是小梅哥的AC620开发板,验证是使用按键将设定的8组16位数据存储到SDRAM中,随后将SDRAM中数据存储到FIFO中,当FIFO不为空时,再将数据通过串口显示到电脑端,查看接收到的数据是否与所发的数据一致。验证这里不再做详细的说明,供学习参考。二、实现主要有以下几个模块:PLL时钟倍频模块、按键消抖模块、同步FIFO模块、SDRAM控制器模块和串口发送模块。由于SDRAM控制器采用...原创 2020-09-24 10:33:22 · 2578 阅读 · 1 评论 -
FPGA SDRAM接口设计(三)设计实现
一、设计要求本设计是在做ov7670摄像头采集数据流时,以SDRAM作为缓存使用,因此这里才使用SDRAM对其进行介绍和设计。在对ov7670摄像头数据存储时,SDRAM采用冲突读和冲突写模式,cas延时为3,冲突长度为8。能正常对不同地址、不同bank进行读写。二、设计思路程序主体框架采用状态机编写,主要有以下几个状态:空状态(NOP)、预充电状态(PRECHARGE)、刷新状态(REF)、加载模式寄存器状态(MODE)、空闲状态(IDLE)、激活状态(ACTIVE)、写状态(WRITE)原创 2020-09-22 15:45:48 · 3680 阅读 · 4 评论 -
FPGA SDRAM接口设计(二)庖丁解牛
目录一、SDRAM控制命令1、Precharge Command(预充电命令)2、Bank Activate Command(激活命令)3、Self Refresh Command(自刷新命令)4、Burst Read Command(冲突读命令)5、Burst Write Command(冲突写命令)6、No Operation Command(空操作命令)7、Mode Register Set(模式寄存器设置)8、其他命令二、时序1、命令输入时序2、读时序原创 2020-09-22 14:29:06 · 1088 阅读 · 0 评论 -
基于FPGA的VGA控制输出显示(使用GM7123高清视频编码芯片)
一、VGA原理1、VGA接口简介VGA的全称是Video Graphics Array,即视频图形阵列,是一个使用模拟信号进行视频传输的标准。早期的CRT显示器由于设计制造上的原因,只能接收模拟信号输入,因此计算机内部的显卡负责进行数模转换,而VGA接口就是显卡上输出模拟信号的接口。如今液晶显示器虽然可以直接接收数字信号,但是为了兼容显卡上的VGA接口,也大都支持VGA标准。VGA显示中,FPGA需要产生5个信号分别是:行同步信号HS、场同步信号VS、R、G、B三基色信号。在VGA视频传输原创 2020-09-14 23:06:26 · 6203 阅读 · 3 评论 -
基于FPGA的LCD1602显示屏驱动
一、LCD1602显示原理1、引脚功能其内部功能框图如下图所示:一般来说,LCD1602有16条引脚,各个厂家的LCD1602可能略有不同,但基本上一样,其16个引脚功能如下:LCD1602引脚功能 引脚号 引脚名 电压等级 功能 1 VSS 0V 电源地 2 VDD +5V 电源正极 3 V0 0V 电压偏置 4 RS H/L 命令/数据 5 R/W H/L原创 2020-09-09 11:39:41 · 14654 阅读 · 24 评论 -
基于FPGA的DDS信号发生器设计(频率、幅度、波形可调)
一、DDS原理DDS全称为直接数字频率合成(Direct Digital Synthesis),其基本原理是在一个周期波形数据下,通过选取其中全部数据或抽样部分数据组成新的波形,由奈奎斯特采样定理可知,最低两个采样点就可以组成一个波形,但实际上最少需要4个点。其原理框图如下:其主要由相位控制字、频率控制字、相位累加器、波形存储器几部分组成。波形存储器:存储一个周期波形的离散信号;频率控制字:用以控制生成的波形频率。相位累加器:用来控制波形的相位累加,组成完整的波形显示。相位控制字原创 2020-09-05 22:42:58 · 57082 阅读 · 152 评论 -
xilinx vivado 2019 驱动问题,Connecting to hw_server url TCP:localhost:3121,jtag连接不上
问题:在对vivado2019.2软件中烧写比特流时,打开硬件目标找不到JTAG,open target连接不上,显示信息为:INFO: [Labtools 27-2285] Connecting to hw_server url TCP:localhost:3121INFO: [Labtools 27-3415] Connecting to cs_server url TCP:localhost:3042解决方法:一般情况下是因为Vivado的驱动没有安装好,只需要将驱动安装上即可,路原创 2020-07-04 14:39:13 · 14436 阅读 · 7 评论 -
FPGA 串口通信(补)——通用模块
目录FPGA串口通信1.串口接收模块2. 串口发送模块FPGA串口通信前面写的串口通信模块,没有通用性,这里写一个可以通用的串口模块,但凡以后需要串口通信的,就可以直接拿过来用。1.串口接收模块表:串口接收模块接口列表 信号名称 I/O 位数 功能描述 clk I 1 系统时钟50MHz rst_n I 1 系统复位 rs232_tx I 1 串口串行数据发送数据口 baud_set...原创 2020-06-07 14:08:09 · 1469 阅读 · 0 评论 -
基于FPGA的I2C通信(三)终
四、EEPROM读写系统设计1. 整体系统概述原创 2020-06-07 12:43:15 · 2488 阅读 · 4 评论 -
基于FPGA的I2C通信(二)
目录三、I2C协议的FPGA实现1. I2C接口设计2. 仿真验证本专题EEPROM读写系统(在下一篇博客讲解,包含本篇内容)整体功能实现的工程下载链接如下:三、I2C协议的FPGA实现上一篇博客对I2C总线协议进行了大体的讲解,以及对I2C总线器件EEPROM(AT24C64)读写时序进行详细阐述,下边就要对EEPROM器件在FPGA上如何进行读写,以及接口设计和调试系统进行具体叙述。本实验平台使用的是小梅哥的AC620开发板,FPGA芯片是cyclone IV EP4...原创 2020-06-07 09:42:06 · 3649 阅读 · 3 评论 -
基于FPGA的I2C通信(一)
一、I2C通信协议1.I2C总线介绍I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件.然后主机接收从器件发送的数据原创 2020-06-06 13:00:20 · 7356 阅读 · 3 评论 -
FPGA verilog 警告:复位中的陷阱
今天在写I2C接口,分析和综合代码时,出现了一个以前没见过或者很少见的警告,这里记录一下:先看代码://设备地址always @(posedge clk or negedge rst_n)begin if(rst_n==1'b0)begin device_addr_a <= {4'b1010,device_addr,1'b0}; end else if(wr_flag) begin device_addr_a <= {4'b1原创 2020-05-27 17:07:52 · 2186 阅读 · 6 评论 -
基于FPGA的数据采集系统(三)终
目录八、按键控制模块九、FIFO控制模块十、DAC控制模块十一、系统整合前两篇将数据采集系统的基本模块详细阐述了一下,下边就开始介绍这几个基本模块互联通信的控制模块,包含按键控制模块和FIFO控制模块。八、按键控制模块按键控制模块主要功能为:当按键按下时,控制ADC模数转换tran_num次。该模块信号端口列表如下表:表8.1 按键控制模块端口信号列表 信号名称 I/O 位数 功能描述 clk I 1 系统时钟50MHz rs原创 2020-05-23 12:47:34 · 4745 阅读 · 6 评论 -
基于FPGA的数据采集系统(二)
目录五、同步FIFO模块六、DAC驱动模块1.TLV5618数模转换详解2.TLV5618接口设计七、ADC驱动模块1.ADC128s022模数转换详解2.ADC128s022接口时序设计五、同步FIFO模块FIFO根据需求可分为同步FIFO和异步FIFO,同步FIFO读写共用同一个时钟周期,异步FIFO读写数据分别用不同的时钟周期。FIFO设计重点是对写满和读空标志的设计,即写满而不溢出,读空又不多读。下表为FIFO主要信号列表:表4:同步FIFO信号列表 信号.原创 2020-05-23 00:18:31 · 8058 阅读 · 8 评论 -
基于FPGA的数据采集系统(一)
整体系统设计本设计主要是对ADC和DAC的使用,主要实现功能流程为:首先通过串口向FPGA发送控制信号,控制DAC芯片tlv5618进行DA装换,转换的数据存在ROM中,转换开始时读取ROM中数据进行读取转换。其次用按键控制adc128s052进行模数转换100次,模数转换数据存储到FIFO中,再从FIFO中读取数据通过串口输出显示在pc上。其整体系统框图如下:图1:FPGA数据采集系统框图从图中可以看出,该系统主要包括9个模块:串口接收模块、按键消抖模块、按键控制模块、ROM模块、D..原创 2020-05-22 18:11:27 · 20145 阅读 · 6 评论 -
Verilog的$readmemb和$readmemh简介和使用
$readmemx的格式:$readmemb("<数据文件名>",<存贮器名>)$readmemb ("<数据文件名>",<存贮器名>,<起始地址>)$readmemb ("<数据文件名>",<存贮器名>,<起始地址>,<结束地址>)$readmemh("<数据文件名>",<存贮器名>)$readmemh("<数据文件名>",<存贮器名>.原创 2020-05-17 17:59:35 · 11699 阅读 · 0 评论 -
FPGA Verilog分析综合时警告:Warning (12241): 1 hierarchies have connectivity warnings - see the Connectivity
警告:Warning (12241): 1 hierarchies have connectivity warnings - see the Connectivity Checks report folder解决过程:看到这个警告,定位不到哪里出现问题,从网上找了下,定位如下:在编译报告上,选择如下图位置,便可以知道,出现在什么地方了。出现“hierarchies”这个词基...原创 2020-04-09 20:09:11 · 4154 阅读 · 0 评论 -
FPGA USB串口通信(二)结束
目录四、设计输入五、仿真测试六、下板测试1.PC向FPGA发送数据2.FPGA向PC发送数据四、设计输入如图所示思维导图,其中包含设计的状态、功能设计、以及信号设计,根据此设计,写出代码。1.主模块:例化按键模块/*************串口通信********************/module serial_port( input ...原创 2020-04-07 22:55:11 · 1599 阅读 · 0 评论 -
FPGA USB串口通信(一)
目录一、Uart串口原理1.串口通信协议简介2.串口的物理层和协议层2.1物理层2.2协议层二、实验平台三、实验要求四、设计输入五、仿真测试六、下板测试一、Uart串口原理1.串口通信协议简介串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口(Serial Interface)是指数据一...原创 2020-04-07 18:27:04 · 6886 阅读 · 1 评论 -
FPGA SDRAM接口设计(一)初窥门径
SDRAM简介:同步动态随机存取内存(synchronous dynamic random-access memory,简称SDRAM)是有一个同步接口的动态随机存取内存(DRAM),可以实现数据的存储和读取。这里主要注意的是同步、动态、随机。同步:SDRAM有一个同步接口,在响应控制输入前会等待一个时钟信号,这样就能和计算机的系统总线同步。这个词在FPGA中经常遇到,体现了SDRAM必须...原创 2020-03-29 21:30:04 · 2773 阅读 · 0 评论 -
Modelsim仿真时自动优化出不来波形
在对Verilog代码用Modelsim仿真时,Modelsim自动优化出不来波形如下仿真时信息:vsim work.SDRAM_interface_tb# vsim # Start time: 14:57:38 on Mar 28,2020# ** Note: (vsim-8009) Loading existing optimized design _opt# # Load...原创 2020-03-28 15:27:45 · 4212 阅读 · 0 评论 -
FPGA verilog 三态门设计及在quartus编译和Modelsim里仿真问题
三态门原创 2020-03-27 15:15:08 · 6052 阅读 · 0 评论 -
FPGA Verilog编译报错:Number of processors has not been specified which may cause overloading on shared
错误信息:FPGA在写Verilog时编译报错,具体错误信息如下:Warning (18236): Number of processors has not been specified which may cause overloading on shared machines. Set the global assignment NUM_PARALLEL_PROCESSORS in y...原创 2020-03-22 11:24:47 · 4945 阅读 · 1 评论 -
FPGA Verilog编译时警告Warning (10230): truncated value with size 32 to match size of target (3)
完整警告:Warning (10230): Verilog HDL assignment warning at digital_clock.v(75): truncated value with size 32 to match size of target原因:在写Verilog的计数程序时,很多人或者很多教程都是这样写:always @(posedge clk or neg...原创 2020-03-14 12:14:41 · 13845 阅读 · 3 评论 -
QuartusII 13.1 和 Modelsim添加外部编辑器GVIM、Notepad++、UltraEdit等
首先你的电脑上安装了外部编辑器,例如GVIM、Notepad++或者UltraEdit等,知道安装路径。这里我提供GVIM、Notepad++或者UltraEdit几个我自己用的编辑器下载安装链接:https://download.csdn.net/download/qq_33231534/12245896QuartusII 13.1添加外部编辑器1. 打开QuartusII 13.1软件,...原创 2020-03-13 10:39:02 · 2738 阅读 · 2 评论 -
Verilog用Modelsim仿真时错误:Instantiating 'u_state_machine_pkt_top' has exceeded the recursion depth limit
错误信息:Instantiating 'u_state_machine_pkt_top' has exceeded the recursion depth limit of 200. (实例化“ u_state_machine_pkt_top”已超过递归深度限制200。)原因:测试文件的模块名和实例化文件模块名一样,造成嵌套死循环,递归深度无限大。如下图所示...原创 2020-03-10 20:23:41 · 4012 阅读 · 5 评论 -
FPGA Verilog分析与综合时出错:Error (10029): Constant driver at state_machine_pkt_top.v(144)
在对Verilog程序分析与综合时,发生错误信息如下:Error (10028): Can't resolve multiple constant drivers for net "data_cnt[15]" at state_machine_pkt_top.v(160)Error (10029): Constant driver at state_machine_pkt_top.v(144...原创 2020-03-10 18:07:31 · 5386 阅读 · 0 评论