FPGA开发技术
FPGA开发技术
电子开发圈
MCU51、STM32、FPGA、Arduino、DIY、电子百科、开发技巧、设计经验,有趣有料有货。
展开
-
xilinx FIFO的使用及各信号的讨论
FIFO的使用非常广泛,一般用于不同时钟域之间的数据传输,比如FIFO的一端是AD数据采集,另一端是计算机的PCI总线,假设其AD采集的速率为16位100K SPS,那么每秒的数据量为100K×16bit=1.6Mbps,而PCI总线的速度为33MHz,总线宽度32bit,其最大传输速率为33*32=1056Mbps,在两个不同的时钟域间就可以采用FIFO来作为数据缓冲。另外对于不同宽度的数据接口...转载 2020-01-18 14:55:15 · 858 阅读 · 0 评论 -
Verilog-状态机编码方式对比:独热码 vs 格雷码
在Verilog中最常用的编码方式有二进制编码(Binary)、格雷码(Gray-code)编码、独热码(One-hot)编码。二进制码和格雷码是压缩状态编码。 若使用格雷编码,则相邻状态转换时只有一个状态位发生翻转,这样不仅能消除状态转换时由多条状态信号线的传输延迟所造成的毛刺,又可以降低功耗。二进制编码也可称连续编码,也就是码元值的大小是连续变化的。如S0=3'd0,S1=3'd1,S2...转载 2020-01-10 17:59:59 · 5980 阅读 · 1 评论 -
基于FPGA的串口发送模块与验证
一、Rs232串口协议串口通信指串口按位(bit)发送和接受字节。虽然比并行通信要慢,但是其物理线路简单并且通信距离长,可达到1200米。物理连接:A发送数据时通过tx将数据一位一位的传输给B的rx ,表现出来的就是tx线的高低电平,B就可以通过rx来检测高低电平来确定数据1、0。由于A、B之间并没有时钟线,不能像I2C那样,可以通过时钟为高时检...转载 2020-01-08 16:49:50 · 740 阅读 · 0 评论 -
基于FPGA的按键消抖模块设计与验证
该集主要知识点:1、利用状态机实现滤除物理按键所产生的抖动波形。2、非阻塞赋值的巧妙运用3、将状态机与计数器功能组合使用4、在仿真代码中利用随机数产生延时随机的时间。5、task 运用方式、以及将仿真测试代码模块化按键抖动的现象与状态机对应的状态:一、源程序/* 实验名称:按键消抖模块设计与验证* 功能实现:滤除按键抖动的波形*/...转载 2020-01-08 16:48:49 · 506 阅读 · 0 评论 -
基于FPGA的BCD计数器设计与验证
BCD码(Binary-Coded Decimal)亦称二进码十进数或二-十进制代码。用4位二进制数来表示1位十进制数中的0~9这10个数码。是一种二进制的数字编码形式,用二进制编码的十进制代码。BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷进行。(百度百科)例子:158 以BCD编码方式编码就会变成 0 0...转载 2020-01-08 16:43:35 · 1205 阅读 · 0 评论 -
FPGA计数器IP核调用与验证
1、利用Quartus II自带的计数器IP核来熟悉怎么使用Quartus II的IP核。 2、使用计数器IP核的步骤(具体过程参考视频,这里贴出几张比较重要的步骤以及解释) 这一步不能勾选,否则会出现其他问题(暂时还不明白是咋回事) 3、生成的原理图(看不懂、略)...转载 2020-01-08 16:42:29 · 919 阅读 · 0 评论 -
基于FPGA的3-8译码器设计验证
[组合逻辑] 源程序:可以认为led_test就是一个芯片 moduleled_test(a,b,c,out); inputa;// 输入信号 inputb;// 输入信号 inpu...转载 2020-01-08 16:41:35 · 860 阅读 · 0 评论 -
例解阻塞赋值与非阻塞赋值
据说阻塞赋值和非阻塞赋值是Verilog语言中最难理解的知识点之一,我也觉得,从网上翻阅了资料,也看过一些视频。以下从两个典型的例子以及多个角度去分析得到与验证阻塞赋值与非阻塞赋值的区别,以及各自的特点。非阻塞赋值与阻塞赋值特性1、非阻塞赋值的特性:赋值语句的流程:a)计算右边的表达式得到结果b)将结果赋值到左边的变量这个过程中允许来自任何其他Verilog语句...转载 2020-01-08 16:40:06 · 889 阅读 · 0 评论 -
ISE - 采用例化ILA核的方式抓信号
除了采用.cdc文件抓取信号以外,还有一种方式是采用例化ILA核的方式抓信号的时序。这种方式的详细操作流程如下:1、添加一个新的ICON IP核。2、一般情况下保持所有的参数默认就可以了。3、再添加一个ILA 的IP核。4、在第一页设置好相关的参数,这些参数的含义核.cdc文件中参数的含义一模一样,这里不再过多解释。...原创 2019-11-08 10:02:49 · 8748 阅读 · 1 评论 -
ISE - 如何防止信号被优化
在一个复杂的设计中,我们往往会抓大量的信号,而ISE14.7编译代码的时候会把一些有相同逻辑的信号给优化掉,这会导致我们在选择信号的时候找不到想要抓取的信号,针对这种情况给大家提供两个解决办法。方法一:1、在你想要抓取的所有信号前面加上(*KEEP = “TRUE”*) (*KEEP = "TRUE"*)reg [3:0] R_cnt; ...原创 2019-11-08 09:59:28 · 3611 阅读 · 0 评论 -
数字电路中应避免产生不必要的锁存器 Latch
锁存器(Latch)是数字逻辑电路中很重要的一种基本电路,常见的锁存器包括三个端口:数据输入口、数据输出口、使能端。当使能端为高电平时,输入口的数据直接送到输出口,此时输入输出口可以看成是直接连通的;当使能端为低电平时,输出口的数据保持之前的数据不变,无论输入口的数据怎么变化,输出都保持不变,就是把原来的状态锁存下来了(所以才叫锁存器)。锁存器与触发器的区别在于:锁存器是电平触发,而触发...转载 2019-11-08 09:43:24 · 1120 阅读 · 0 评论 -
Vivado - 时序约束基础
微信公众号【电子开发圈】,理论结合实践,开启你的学习新方案!电子DIY、Arduino、51单片机、STM32、FPGA……电子百科、趣味知识、职业经验、设备拆机、科技头条……点击链接,免费下载100G+电子设计学习资料!http://mp.weixin.qq.com/mp/homepage?__biz=MzU3OTczMzk5Mg==&hid=7&sn=ad5...转载 2019-10-30 14:25:13 · 273 阅读 · 0 评论 -
Vivado - 时序分析基础
微信公众号【电子开发圈】,理论结合实践,开启你的学习新方案!电子DIY、Arduino、51单片机、STM32、FPGA……电子百科、趣味知识、职业经验、设备拆机、科技头条……点击链接,免费下载100G+电子设计学习资料!http://mp.weixin.qq.com/mp/homepage?__biz=MzU3OTczMzk5Mg==&hid=7&sn=ad5...转载 2019-10-30 14:18:12 · 292 阅读 · 0 评论 -
Xilinx-7-SelectIO-IDDR原语的操作模式
在7系列设备的ILOGIC block中有专属的registers来实现input double-data-rate(DDR) registers。这些特性可以通过实例化IDDR 原语实现。所有进入到I/O tile 的clocks都是完全多路复用的,即在ILOGIC和OLOGIC之间没有clock sharing。 IDDR原语支持如下的操作模式:• OPPOSITE_EDG...原创 2019-10-28 17:50:07 · 1669 阅读 · 0 评论 -
Xilinx-7-SelectIO-ISERDESE2-串并转换器
ISERDESE2是专用的串并转换器,它在完成串并转换时并不会带来多余的时序上的问题,从而很适合应用到高速源同步应用中。比如摄像头数据。转载 2019-10-28 10:45:50 · 9192 阅读 · 3 评论 -
Xilinx-BlockRAM-高效移位寄存器
1.在任何情况下,深度较深的以为寄存都强烈建议使用block ram。思路如上图所示,但实现不推荐用这么多D触发器,也不推荐使用SRL16之类的slice级别移位寄存器。2.对于(例如图像处理)分多通道时,不用拘泥于单通道对应单block ram。Block ram是9bit 1920深度。输入格式为R10 G10 B10,如上图最大化利用位宽。...转载 2019-10-24 18:41:41 · 1695 阅读 · 0 评论 -
FPGA优化时序之补全if/else的重要性
时序优化中重要的一项就是提高模块的最高工作频率,工作频率由关键路径决定,通常的提高工作频率的步骤是:利用时序分析工具找到关键路径,分析关键路径主要延迟是布线延迟还是逻辑延迟,然后轮番十八般武器,如果是逻辑延迟过大就用逻辑切割,插入D触发器,如果布线延迟太长,则复制触发器,减小负载等等,按部就班后,有时可以明显改善,但很多时候由于设计需求所限不能插入触发器,或是面积受限无法复制触发器,这些程式...转载 2019-10-24 10:06:06 · 1681 阅读 · 0 评论 -
Vivado-警告-没有Debug ILA core, Probes窗口空白
大概是说设计里没有ILA core,但是debug文件里有ILA core,而且debug probes窗口下什么也没有。但是,我综合后明明插入了debug core呀,而且在约束文件里也自动生成了相关信息,查看schematic,也添加了debug相关的两个元件,为毛program时就是看不到呢?解决:1: VIO 和 ILA 的CLK 有问题。2: 我查的X...转载 2019-10-24 09:26:17 · 9664 阅读 · 1 评论 -
Vivado-2015.4保存ila波形方法
Vivado2015下debug后的波形通过图形化界面并不能保存抓取到波形,保存按钮只是保存波形配置,如果需要保存波形需要通过TCL命令来实现:write_hw_ila_data 123 [upload_hw_ila_data hw_ila_1]123为保存的文件名,需要带路径,hw_ila_1为你的ILA的名字;如果要读取已保存的波形,可以用下面的命令:read_hw...原创 2019-10-18 17:57:59 · 1277 阅读 · 0 评论 -
Vivado - 设置多线程编译
在VIVADO中一个run编译时支持的线程数如下表:(综合时一般是2线程)设置多线程的命令为: set_param general.maxThreads 8读取当前线程数的命令: get_param general.maxThreads...转载 2019-10-18 17:33:46 · 776 阅读 · 0 评论 -
MIPI协议以及发送端和接收端
1. 概述这里讨论MIPI协议以及对应的发送端和接收端,发送端为smartsens的360万像素的SC3035-M,接收端为海思的Hi3516A。MIPI(Mobile Idustry Processor Interface)是MIPI联盟发起的移动应用处理器制定的标准,广泛应用于摄像头接口、显示屏接口等。转载 2019-10-18 17:19:23 · 3003 阅读 · 0 评论 -
ISE - iMPACT - BIT生成MCS及固化方法
一、bit转换成mcs文件1,打开开始菜单->选择所有应用程序->XilinxDesign Toos->ISE Design Suite 14.7->ISE Design Tools->64 bits Tolls->iMPACT。2,选择Creat PROM File(PROM File For...)。...转载 2019-09-30 18:16:26 · 9536 阅读 · 6 评论 -
ISE - ChipScope 使用教程
一、软件与硬件平台 操作系统:Windows 8.1 开发套件:ISE14.7FPGA型号:XC6SLX45-CSG324二、ChipScope介绍 ChipScope是Xilinx提供的一个校验FPGA设计的工具。它的本质是一个虚拟的逻辑分析仪,能调用FPGA内部的逻辑资源对代码中的各个变量进行抓取分析。与ModelSim等一些其他的FPGA仿...转载 2019-09-30 18:01:17 · 1127 阅读 · 0 评论 -
Vivado - 软件使用之下载配置流程
1. 在Flow Navigator中点击Program and Debug下的Generate Bitstream选项,工程会自动完成综合、实现、Bit文件生成过程,完...原创 2019-08-02 22:41:57 · 2284 阅读 · 0 评论 -
FPGA芯片上电加载程序时序详解
目前,大多数FPGA芯片是基于 SRAM 的结构的, 而 SRAM 单元中的数据掉电就会丢失,因此系统上电后,必须要由配置电路将正确的配置数据加载到 SRAM 中,此后 ...转载 2019-07-12 21:57:42 · 3160 阅读 · 0 评论 -
FPGA时序分析,时序约束知识
时序约束目的:一、 提高设计的工作频率二、获得正确的时序分析报告(STA:静态时序分析)常用的时序概念:周期,最大时钟频率、时钟建立时间、时钟保持时间、时钟到输出延时、管脚到管脚延时、Slack和时钟偏斜(Skew).周期:如图1是周期示意图,当计算出Tperiod,那么当然fmax=1/Tperiod,fmax是显示设计最重要的性能指标之一。时钟建立时间:如图3所示是时钟建立时间转载 2019-06-24 10:51:24 · 1198 阅读 · 0 评论 -
FPGA - 内部组成单元与资源分布
FPGA由6部分组成,分别为可编程输入/输出单元(IOB)、基本可编程逻辑单元(SLENCE)、嵌入式块RAM(block ram)、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核等。转载 2019-06-21 10:28:41 · 1465 阅读 · 0 评论 -
关于建立时间与保持时间的深入理解
建立时间(Tsu:set up time)是指在时钟沿到来之前数据从不稳定到稳定所需的时间,如果建立的时间不满足要求那么数据将不能在这个时钟上升沿被稳定的打入触发器;保持...转载 2019-06-14 23:14:13 · 4539 阅读 · 0 评论 -
软核、硬核与固核的概念区别
IP(Intelligent Property) 核是具有知识产权核的集成电路芯核总称,是经过反复验证过的、具有特定功能的宏模块,与芯片制造工艺无关,可以移植到不同的半导...转载 2019-06-12 23:26:30 · 1515 阅读 · 0 评论 -
ALTERA产品型号命名
1.前缀 EP 典型器件 EPC 组成的EPROM 器件 EPF FLEX 10K 或FLFX 6000 系列、FLFX 8000 系列 EPM MAX5000 系列、MAX7000 系列、MAX9000 系列 EPX 快闪逻辑器件原创 2019-06-10 09:20:17 · 571 阅读 · 0 评论 -
如何正确使用FPGA的时钟资源?
赛灵思在其FPGA中提供了丰富的时钟资源,大多数设计人员在他们的FPGA设计中或多或少都会用到。不过对FPGA设计新手来说,什么时候用DCM、PLL、PMCD和MMCM四大类型中的哪一种,让他们颇为困惑。本文为您解惑......转载 2019-06-06 11:14:56 · 1253 阅读 · 0 评论 -
PCI总线地址空间与系统地址空间的关系
PCI总线具有32位数据/地址复用总线,所以其存储地址空间为2的32次方=4GB。也就是PCI上的所有设备共同映射到这4GB上,每个PCI设备占用唯一的一段PCI地址,以便于PCI总线统一寻址。每个PCI设备通过PCI寄存器中的基地址寄存器来指定映射的首地址。PCI地址空间对应于计算机系统结构中的PCI总线。转载 2019-06-06 10:56:20 · 281 阅读 · 0 评论 -
Quartus II - 软件安装教程
Quartus II 工具安装一般分为两个部分,首先是开发工具本身的安装,其次就是器件库的安装,我们可以根据我们的需要选择相应的器件库来安装,这里我们使用Cyclone IV的FPGA,即安装Cyclone器件库即可。转载 2019-06-06 10:52:00 · 13241 阅读 · 1 评论 -
Vivado - Timing Constraints Wizard
它分析网表,时钟网络连接和现有的时序约束,识别设计上缺少的时序约束。向导包括11个页面涵盖三类约束:•时钟°主时钟Primary clocks°生成时钟Generated clocks°转发时钟Forwarded clocks°外部反馈延迟External feedback delays•输入...原创 2018-11-16 10:50:47 · 3733 阅读 · 0 评论 -
常用逻辑电平标准总结
现在常用的电平标准有TTL、CMOS、LVTTL、LVCMOS、ECL、PECL、LVPECL、RS232、RS485等,还有一些速度比较高的 LVDS、GTL、PGTL、CML、HSTL、SSTL等。下面简单介绍一下各自的供电电源、电平标准以及使用注意事项。转载 2018-11-16 10:18:32 · 1199 阅读 · 0 评论 -
Vivado - 警告 - [filemgmt 56-288]
[filemgmt 56-288] Reference 'custom_tx' contains sub-design file 'D:/fifo_generator_txc_192.xci' configured for out-of-context synthesis with mode Singular. OOC sub-designs are not allowed in the ...原创 2018-09-21 10:26:24 · 2384 阅读 · 0 评论 -
Vivado - 警告 - [filemgmt 56-176]
[filemgmt 56-176]Module references are not supported in manual compile order mode and will be ignored.手动编译顺序模式不支持模块引用,并且将被忽略。解决方法1:输入指令 : set_property source_mgmt_mode All [current_project...原创 2018-09-21 10:19:06 · 2809 阅读 · 0 评论 -
Vivado - 固化程序后识别不到FPGA设备
固化程序之后,以内部固化程序启动时,要拔出JTAG。避免启动时因识别JTAG而延迟固化程序的加载,出现"no programmable"现象或扫描不到FPGA设备的现象。若已拔出JTAG仍出现这些现象,经过软复位后现象消失,可将配置频率调高。Vivado : Tools -> Edit Device Properties -> Configuration -> ...原创 2018-09-21 10:05:32 · 3428 阅读 · 0 评论 -
Verilog - 利用加法器实现乘法器 [代码]
module multiplier ( input [2:0] x, input [2:0] y, output [5:0] mult_out ); wire [2:0] temp0 = y[0] ? x : 3'd0; wire [2:0] temp1 = y[1] ? x : 3'd0; wire [2:0] temp2 = y[2] ? x : 3'...原创 2018-08-26 16:10:32 · 5655 阅读 · 0 评论 -
组合逻辑电路与时序逻辑电路
组合逻辑电路:输出只是当前输入逻辑电平的函数(有延时),与电路的原始状态无关的逻辑电路。当输入信号中的任意一个发生改变时,输出都有可能变化,但与目前所处的状态没有任何关系(即逻辑电路无记忆部件)。时序逻辑电路:输出不只是当前输入的逻辑电平的函数,还与目前电路所处的状态有关的逻辑电路(即逻辑电路有记忆部件)。原创 2018-08-26 14:49:57 · 4990 阅读 · 0 评论