嵌入式FPGA相关知识汇总
文章平均质量分 73
嵌入式FPGA相关知识汇总
浩瀚之水_csdn
路漫漫其修远兮,吾将上下而求索,立刻行动,坚持,努立
展开
-
利用FPGA实现外设通信接口之:利用FPGA实现USB 2.0通信接口
10.3利用FPGA实现USB2.0通信接口10.3.1USB2.0接口的实现方式利用FPGA来实现USB2.0接口的方式一般有两种,一是借助外围的USB接口芯片,二是FPGA内部实现USB协议控制器,外部通过USB的PHY芯片来实现接口。对于第一种方式,FPGA不需要实现USB通信协议,开发的风险小,而且性能稳定,因此被大部分设计者所采用。而第二种方式需要购买USB的IP核,门槛较高。如果自己开发基于FPGA的USB协议栈,风险高,而且兼容性和稳定性很难保证。目前市场...转载 2022-03-18 08:35:16 · 10343 阅读 · 1 评论 -
FPGA设计中RAM的一些基本概念
1、FPGA中双口RAM的基本概念 在FPGA的设计中,常用的数据缓存IP有FIFO和RAM,其中RAM又分为单口RAM,伪双口RAM和双口RAM。 单口RAM与双口RAM的区别在于,单口RAM只有一组数据线与地址线,因此读写不能同时进行。而双口RAM有两组数据线与地址线,读写可以同时进行。 伪双口RAM(Xilinx称为Simple two-dual RAM),一个端口只读,另一个端口只写。 双口RAM(Xilinx称为True two-dual RAM),其两个端口都支持读写..转载 2021-08-03 09:18:01 · 3079 阅读 · 0 评论 -
谈VHDL/Verilog的可综合性以及对初学者的一些建议
一、HDL不是硬件设计语言 过去笔者曾碰到过不少VHDL或Verilog HDL的初学者问一些相似的问题,诸如如何实现除法、开根号,如何写循环语句等等。在这个论坛上,也时常能看到一些网友提出这一类的问题。 对于这些问题,首先要明确的是VHDL和Veriglog并非是针对硬件设计而开发的语言,只不过目前被我们用来设计硬件。HDL是Hardware Description La转载 2015-02-08 10:26:40 · 2010 阅读 · 0 评论 -
SRAM Controller
Abstract 本实验实现了对SRAM每一个地址进行遍历读/写操作,然后对比读写前后的数据是否一致,最后通过一个LED灯的亮灭进行指示;Introduction DE2-115上用的SRAM是IS61WV102416BL(1Mx16 High-Speed Asynchronous CMOS Static RAM With 3.3V Supply)转载 2014-08-29 15:29:23 · 3936 阅读 · 0 评论 -
SDRAM工作的大体流程
1、 首先,我们知道内存控制器要先确定一个P-Bank的芯片集合,然后才对这集合中的芯片进行寻址操作。因此要有一个片选的信号,它一次选择一个P-Bank的芯片集(根据位宽的不同,数量也不同)。被选中的芯片将同时接收或读取数据,所以要有一个片选信号。2、 接下来是对所有被选中的芯片进行统一的L-Bank的寻址,目前SDRAM中L-Bank的数量最高为4个,所以需要两个L-Bank地址信号(2转载 2014-08-29 15:26:40 · 1596 阅读 · 0 评论 -
门控时钟的使用
组合逻辑中多用门控时钟,一般驱动门控时钟的逻辑都是只包含一个门,如果有其他的附加逻辑,就容易因竞争而产生不希望的毛刺。门控时钟通过一个时能信号控制时钟的开关。当系统不工作时可以关闭时钟,整个系统处于非激活状态,这样就能够在某种程度上降低系统功耗。 然而,使用门控时钟并不符合同步设计的思想,它可能会影响设计的实现和验证。单纯从功能上看,使用使能时钟替代门控时钟是一个不错的选择;但是使能时钟在使转载 2014-08-29 15:27:21 · 3788 阅读 · 1 评论 -
Testbench基本入门
1 编写testbench目的 编写testbench的主要目的是为了对使用硬件描述语言(HDL)设计的电路进行仿真验证,测试设计电路的功能、部分性能是否与预期的目标相符。编写testbench进行测试的过程如下:1) 产生模拟激励(波形);2) 将产生的激励加入到被测试模块并观察其输出响应;3) 将输出响应与期望进行比较,从而判断设计的转载 2014-08-24 14:41:50 · 24548 阅读 · 3 评论 -
Quartus ii与Modelsim-altera 6.5b联调前仿真
本实例使用的是Quartus ii9.1版本,Modelsim-altera版本是 Quartus ii9.1版本 对应的6.5b版本。本实例使用的是格雷码计数器(Gray)=============================================================================首先打开Quatus ii,File->New Projec转载 2014-08-24 14:52:34 · 1335 阅读 · 0 评论 -
testbench
testbench是一种验证的手段。首先,任何设计都是会有输入输出的。但是在软环境中没有激励输入,也不会对你设计的输出正确性进行评估。那么此时便有一种,模拟实际环境的输入激励和输出校验的一种“虚拟平台”的产生。在这个平台上你可以对你的设计从软件层面上进行分析和校验,这个就是testbench的含义。 初步认识 就初学而言,testbench更像一个激励的转载 2014-08-24 14:40:25 · 1760 阅读 · 0 评论 -
ModelSim入门及Testbench编写——合理利用仿真才是王道
在入职之前曾自学了一段时间的Verilog,后来因为工作的缘故鲜有接触,就搁置下来了。后来因偶然的机会需要参与一个CPLD的小项目,又开始从零学起,有些讽刺的是,不知道如何入手工具的我又回到EDN上翻之前自己写的博文,才重新熟悉了Quartus的使用流程。现在得了些空闲,最重要的是有了些许想法,终于重新打起精神来料理一个博客。重温了基本的Quartus操作和语法后,需要对手头的工作进行仿真验证转载 2014-08-24 14:38:33 · 1564 阅读 · 0 评论 -
modelsim与modelsim_altera使用的一些区别
今天在师兄那里听说,modelsim仿真和modelsim_altera仿真时有些区别的,我所遇到的区别是:1.modelsim能够对verilog和vhdl的混合编程进行仿真,而modelsim_altera只能进行单一语言(verilog或者vhdl)进行仿真2.modelsim的ip核需要在第一次使用时需要进行预编译,而modelsim_altera则不需要对ip核库进行编译(因为内转载 2014-08-24 14:50:08 · 9605 阅读 · 1 评论 -
关于Verilog的可综合性
可综合模型的结构 如果程序只用于仿真,那么几乎所有的语法和编程语句都可以使用。但如果程序是用于硬件实现,那么我们就必须保证程序的可综合性,即所编写的程序能被综合器 转化为相应的电路结构。不可综合的HDL语句在用综合工具综合时将被忽略或者报错。作为设计者,应该对可综合模型的结构有所了解。 虽然不同的综合工具对Verilog HDL语法结构的支持不尽相同,但Verilog转载 2015-02-08 10:26:04 · 4283 阅读 · 0 评论 -
Verilog的数据流、行为、结构化与RTL级描述
Verilog语言可以有多种方式来描述硬件,同时,使用这些描述方式,又可以在多个抽象层次上设计硬件,这是Verilog语言的重要特征。 在Verilog语言中,有以下3种最基本的描述方式:数据流描述:采用assign连续赋值语句行为描述:使用always语句或initial语句块中的过程赋值语句(推荐掌握)结构化描述:实例化已有的功能模块或原语转载 2015-02-08 09:54:52 · 17761 阅读 · 2 评论 -
FPGA经验分享——时序收敛之路
首先感谢 coyoo 博主一直以来在 EDN 上分享他的经验,也感谢他这次慷慨拿出新作与我们分享。 非常希望能够拜读 coyoo 博主的大作,尤其希望对虚拟 JTAG 技术有一个深入的了解。 这里分享一下之前自己优化设计时序时的经验总结。相同的内容之前已经发在自己的 EDN 博客中了,不算违规吧? 内容分为五个部分(其实只有三个啦)。转载 2016-06-23 22:07:51 · 14632 阅读 · 3 评论 -
parameter与define 区别
1、语法声明:parameter xx = yy;`define XX YY使用:xx`XX2、作用域parameter 作用于声明的那个文件;`define 从编译器读到这条指令开始到编译结束都有效,或者遇到`undef命令使之失效。如果想让parameter或`define作用于整个项目,可以将如下声明写于单独文件,并用`include让每个文件转载 2016-06-19 06:21:31 · 1504 阅读 · 0 评论 -
FPGA基础之锁存器与触发器的设计
版权声明:转载请注明出处:http://blog.csdn.net/lg2lh一、锁存器首先设计锁存器的时候应该清楚什么是锁存器,锁存器其实是对电平信号敏感的,一定信号是电平敏感的,和时钟边沿clk无关。所以用verilog描述的时候,应该是:[cpp] view plain copy always @(a,b,e)转载 2016-06-18 19:37:11 · 2844 阅读 · 0 评论 -
FPGA基础之逻辑单元(LE or LC)的基本结构
版权声明:转载请注明出处:http://blog.csdn.net/lg2lh逻辑单元在FPGA器件内部,用于完成用户逻辑的最小单元逻辑单元在ALTERA叫作(Logic Element,LE)LE,在XILNX中叫作LC(LOGIC CELL).1.逻辑单元与逻辑阵列 逻辑单元(Logic Element,LE)在FPGA器件内部,转载 2016-06-18 19:33:27 · 9187 阅读 · 0 评论 -
FPGA组合逻辑部件LUT的基本原理
数字逻辑电路一般都是时序部件(触发器)+组合逻辑(与门,或门,异或门等)来完成一系列的功能。既然完成一个特定的功能可以通过组合逻辑来实现,为什么要引入时序逻辑呢? 这是因为时序逻辑是基于时钟沿(上升沿或者下降沿)触发,只有在时钟边沿数据才会被锁存,具有良好的去毛刺,抑制干扰作用,保证了数字电路功能的正确性和稳定性。(这方面原理将会在下一篇博文中说明)。既然构成数字逻辑最重要的部件是组转载 2016-06-18 19:29:56 · 7875 阅读 · 0 评论 -
FPGA与MCU,DSP(如C6000,C5000等)等设计思想的异同
本篇文章讲述FPGA设计思路与MCU/DSP的异同。前阵子博主繁杂事情较多,故一直没有时间更新博客,言归正传,接下来开始描述: 传统的MCU/DSP基于软件思维,软件思维的特点基本上是串行,即便是用多核的DSP或者MCU进行数据的并行处理,在各个核内部运行的程序也是串行的。所谓的串行,举个例子,比如说C语言: for(i = 0; i转载 2016-06-18 19:28:50 · 1481 阅读 · 0 评论 -
译码器的定义及功能
[导读] 译码器的定义及功能 译码是编码的逆过程,它的功能是将具有特定含义的二进制码进行辨别,并转换成控制信号,具有译码功能的逻辑电路称为译码器译码器的定义及功能 译码是编码的逆过程,它的功能是将具有特定含义的二进制码进行辨别,并转换成控制信号,具有译码功能的逻辑电路称为译码器。 译码器可分为两种类型,一种是将一系列代码转换成与之一一对应的有效信号。这种译码器可转载 2016-06-18 19:24:24 · 13730 阅读 · 0 评论 -
基于verilog按键消抖设计
关于键盘的基础知识,我就以下面的一点资料带过,因为这个实在是再基础不过的东西了。然后我引两篇我自己的博文,都是关于按键消抖的,代码也正是同目录下project里的。这两篇博文都是ednchina的博客精华,并且在其blog首页置顶多日,我想对大家会很有帮助的。 键盘的分类 键盘分编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的转载 2014-05-25 07:50:58 · 24983 阅读 · 5 评论 -
使用TimeQuest时序分析器
本文由本人原创翻译于ALTERA的官网上Educational_Materials->Digital_Logic->Tutorials->Timing_Analysis_Tutorials下一篇名为Using TimeQuest Timing Analyzer的文章,个人觉得ALTERA官网上很多教程都很不错,有机会可以锻炼下专业英语水平,随便也可以把这些不错的教程和大家分享。原文档包含在下面的附转载 2016-06-26 09:07:17 · 5344 阅读 · 0 评论 -
用Quartus II Timequest Timing Analyzer进行时序分析 :实例讲解
一,概述用Altera的话来讲,timequest timing analyzer是一个功能强大的,ASIC-style的时序分析工具。采用工业标准--SDC(synopsys design contraints)--的约束、分析和报告方法来验证你的设计是否满足时序设计的要求。在用户的角度,从我使用TimeQuest的经验看,它与IC设计中经常用到的比如prime time,time转载 2016-06-26 09:03:20 · 26649 阅读 · 2 评论 -
如何编写testbench的总结(非常实用的总结)
1.激励的设置相应于被测试模块的输入激励设置为reg型,输出相应设置为wire类型,双向端口inout在测试中需要进行处理。方法1:为双向端口设置中间变量inout_reg作为该inout的输出寄存,inout口在testbench中要定义为wire型变量,然后用输出使能控制传输方向。eg:inout [0:0] bi_dir_port;wire [0:0] bi_dir_po转载 2014-08-24 14:41:46 · 7368 阅读 · 0 评论 -
怎样在设计中添加FIFO宏模块
quartus软件内置了很多我们经常用到的电路模块,统称为宏模块,在做EDA设计的时候,我们可以直接调用他们来简化设计过程。不要小看了宏模块,如果利用得当,可以省去你一多半的设计时间呢。这里以FIFO先进先出宏模块为例,说明在quartus中怎样添加宏模块。工具/原料quartus II 9.0步骤转载 2014-05-26 22:42:45 · 1590 阅读 · 0 评论 -
defparam的语法
当一个模块引用另外一个模块时,高层模块可以改变低层模块用parameter定义的参数值,改变低层模块的参数值可采用以下两种方式: 1)defparam 重定义参数 语法:defparam path_name = value ; 低层模块的参数可以通过层次路径名重新定义,如下例:module top ( .....)input....;output...转载 2014-05-25 07:50:33 · 719 阅读 · 0 评论 -
Verilog中状态机编码方式的选择:二进制编码(Binary)、格雷码(Gray-code)编码、独热码(One-hot)编码
一般的,在Verilog中最常用的编码方式有二进制编码(Binary)、格雷码(Gray-code)编码、独热码(One-hot)编码。二进制码和格雷码是压缩状态编码。 若使用格雷编码,则相邻状态转换时只有一个状态位发生翻转,这样不仅能消除状态转换时由多条状态信号线的传输延迟所造成的毛刺,又可以降低功耗。 二进制编码也可称连续编码,也就是码元值的大小是连续变化的。如S0=3'转载 2014-05-25 07:47:38 · 6867 阅读 · 0 评论 -
专家博客一览
http://bbs.ednchina.com/blog_index.jspa?blog_id=178509&entry_month=&viewall=true&curr_page=2&sort=0#原创 2014-05-08 21:54:13 · 598 阅读 · 0 评论 -
嵌入式逻辑分析仪SignalTap II 设计范例
嵌入式逻辑分析仪—SigbalTap II,脱离软件仿真,嵌入式逻辑分析仪,多通道数据测试,在没有外置logic的时候。还是比较爽的事情本例中用正弦波、三角波、锯齿波、方波波形数据为参考,简要讲解SignalTap II(1)新建工程,引脚配置:,RTL图如下(2)新建SignalTap II 文件 (3) 设置待测信号名(4)在node双击转载 2014-05-23 21:50:45 · 1000 阅读 · 0 评论 -
复位处理详细设计方案
一、方案一1. 复位处理简介: 复位电路一般都是芯片外部管脚直接输入芯片内部的,所以会有毛刺产生,被内部所有有复位功能的寄存器使用,所以地位非常重要,功能就是复位寄存器。2. 复位处理规格: 复位信号没有毛刺。 3. 实现原理如下图所示:rst_p之前的逻辑完成延时的功能,是p_rst_n和p_rst_n的延时信号两个信号相或得原创 2014-04-28 23:05:45 · 1131 阅读 · 0 评论 -
FPGA学习之FIFO
FIFO是一种先进先出的电路,使用在需要产生数据接口的部分,用来存储、缓冲在两个一部时钟之间的数据传输。在一部电路中,由于时钟之间周期和相位完全独立,因为数据丢失概率不为零。使用FIFO可以在两个不同时钟域系统之间快速而方便地传输实时数据。在网络接口、图像处理灯方面,FIFO得到广泛的应用。FIFO的设计难点:产生可靠的FIFO读写指针和生成FIFO“空”、“满”状态标识。异步FI转载 2014-05-12 21:53:46 · 1695 阅读 · 0 评论 -
PLL详细设计方案
1. PLL简介: PLL(Phase Locked Loop):为锁相回路或锁相环,用来统一整合时脉讯号,使内存能正确的存取资料。PLL用于振荡器中的反馈技术。锁相环是一种反馈电路,其作用是使得电路上的时钟和某一外部时钟的相位同步。PLL通过比较外部信号的相位和由压控晶振(VCXO)的相位来实现同步的,在比较的过程中,锁相环电路会不断根据外部信号的相位来调整本地晶振的时钟相位,原创 2014-04-26 19:45:15 · 2191 阅读 · 0 评论 -
基于Quartus II的在线调试方法
细算一下,发现Altera在Quartus II工具中居然提供了五种不同的在线调试方法。这里的在线调试是指协助或不借助于外部工具的FPGA板级调试。这些方法调试形式上稍有不同,互有优劣,目的都是为了帮助设计者更有效的完成板级验证。至于在面对这些方法时如何选择更适合特定的工程,应该综合考虑设计者的经验、喜好、对工具的熟悉程度、器件支持与否与工程的调试需求等因素。 l Signal转载 2014-05-08 21:50:49 · 7763 阅读 · 0 评论 -
SRAM(静态随机存储器)
SRAM是英文Static RAM的缩写,即静态随机存储器。它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。目录1基本简介2主要规格3基本特点4主要用途5工作原理6结构原理7背景知识1基本简介编辑SRAM不需要刷新电转载 2014-05-25 08:05:08 · 8138 阅读 · 1 评论 -
关于储存设备知识介绍汇总
1. 关于储存设备介绍请lia原创 2014-05-25 08:13:57 · 737 阅读 · 0 评论 -
【quartus】原理图输入设计详解攻略
Altera公司的Quartus为设计者提供了多种设计输入方法,包括原理图输入、状态图输入、HDL语言描述、网络表文件等,所不同的是,Quartus可以在一个工程中同时使用VHDL、Verilog语言输入。这里详细介绍原理图输入设计方法。工具/原料Quartus II 9.0步骤/方法转载 2014-05-26 22:46:43 · 10546 阅读 · 0 评论 -
HDL输入设计详解攻略
Altera公司的Quartus为设计者提供了多种设计输入方法,包括原理图输入、状态图输入、HDL语言描述、网络表文件等,所不同的是,Quartus可以在一个工程中同时使用VHDL、Verilog语言输入。这里详细介绍HDL输入设计方法。工具/原料Quartus II 9.0步骤/方法转载 2014-05-26 22:45:50 · 1353 阅读 · 0 评论 -
良好的代码编写风格(二十五条)
良好代码编写风格可以满足信、达、雅的要求。在满足功能和性能目标的前提下,增强代码的可读性、可移植性,首要的工作是在项目开发之前为整个设计团队建立一个命名约定和缩略语清单,以文档的形式记录下来,并要求每位设计人员在代码编写过程中都要严格遵守。良好代码编写风格的通则概括如下:(1) 对所有的信号名、变量名和端口名都用小写,这样做是为了和业界的习惯保持一致;对常量名和用户定义的类型用大写;(2)转载 2014-05-25 15:03:11 · 1027 阅读 · 0 评论 -
UART_RECV详细设计方案
1. UART_RECV简介: 串口是用的非常多的一种接口,实现原理比较简单,基本所有CPU芯片都配置有串口,所以经常被用来作为调试接口。 2. UART_RECV规格: 实现9600波特率的串口接收,上位机串口软件发送的数据,可以被接收到。 3. 实现原理以波特率9600为例子说明,波特率9600发送一个bit的时间为1s/9600=10原创 2014-05-25 15:01:21 · 2582 阅读 · 0 评论 -
UART_SEND详细设计方案
1. UART_SEND简介: 串口是用的非常多的一种接口,实现原理比较简单,基本所有CPU芯片都配置有串口,所以经常被用来作为调试接口。2. UART_SEND规格: 实现9600波特率的串口发送,上位机串口软件可以接收到发送的数据。 3. 实现原理以波特率9600为例子说明,波特率9600接收一个bit的时间为1s/9600=104us,即原创 2014-05-25 14:48:59 · 3625 阅读 · 0 评论