文档库 最新最全的文档下载
当前位置:文档库 › FPGA学习笔记

FPGA学习笔记

FPGA学习笔记
FPGA学习笔记

版权和解释权归十万个为什么为什么所有

有错和补充欢迎指正和添加

笔试面试篇

1、同步异步

#设计首先走全局时钟网络,只有一个时钟是最好的

#当需要多个时钟的时候用PLL生出时钟,PLL是FPGA里面的硬核,在Altera的SDC(约束文件)里面会有如下语句,可以用工具生成。

create_clock -name "clk_100m" -period 10.000ns [get_ports {clk_in_100mhz}]

create_clock -name "clkout" -period 10.000ns [get_ports {clkout}]

# Automatically constrain PLL and other generated clocks

这句是工具自动给你设置产生于哪个时钟,很有用,自己写的话麻烦

derive_pll_clocks -create_base_clocks

以上用一个时钟或者一个时钟派生出的具有因果关系的为同步逻辑

异步逻辑就是没有固定因果关系

2、异步的优缺点

#优点是及时反映,虽然设计原则的尽量遵循同步,但是现在很多研究异步,发论文可以考虑研究。

#缺点是不稳定,亚稳态是设计中需要避开的,不然亚稳态会传播到下面的逻辑下面下面的逻辑,从而毁掉电路

#但是异步是不可避免的,两个时钟不同的地方称之为跨时钟域

3、亚稳态

B的时钟刚好采到A时钟的边沿或者不满足建立时间

#FPGA设计中一般都是不满足建立时间

#解决方法,我说一个比较常用的“双跳技术”,注意此方法只能消除亚稳态使他为固定的0或者1,但是0或者1是不确定的。

4、跨时钟域处理方法

#单根信号一般是多打一拍

;快到慢用信号展宽,比较简单的展宽方法是A时钟再延迟一个周期与原来的A时钟相或。可能会出现冒险。再用A时钟打一拍可消除。

其他情况不讨论了

#多根信号

;可以合并成单根

;握手,以问答的方式,看准备好没有

;异步fifo,很重要,网上很多写法,我传个以前在有本书上抄的简单程序叫afifo.v

异步fifo,FPGA有IP可以直接用,就算自己设计一般也不用自己写这种太小的ram,ram 也要用IP。这个用IP可以节约资源,RAM的资源和FPGA逻辑的不一样不用白不用。

5、竞争和冒险

信号经过不同路线到达一个门的输入时间不一样叫竞争

产生毛刺叫冒险

解决方法:添加布尔式的消去相,这是什么鬼不懂;在芯片外加电容

6、Tco、Tsetup、Thold

这个自己看看记记算算,传了个时序篇的文档。网上的都差不多自己算算就行了,哦我有两个Altera两个xilinx的开发板光盘资料,慢慢放进置顶帖的网盘

7、时钟抖动与偏斜

抖动是两边都可能偏差,而且偏差在一个范围变化,取决于时钟源如晶振的质量,保持时间也加这个,建立时间也加

偏斜是一个时钟到达两个寄存器因为路径原因有时差造成的,一边偏而且固定值

同步系统最怕时钟偏斜

其他记忆性的东西问概念的就不写了,写代码的都不难和我们学校EDA课差不多,以前开贴讨论过就不写了

培训和学校实验学习篇

怎么用各种工具

具体工程中要注意什么

分析设计流程着手写代码

工具不在多在得心应手,感慨一下做IC学的工具太多,还难用

1、QII或者ISE用一样,建个流水灯,走个流程下来,下载到FPGA上

2、Modelsim各种库的添加,仿真;还可以和EDA工具联合起来直接仿真

3、在线逻辑分析仪(用FPGA资源搭建了一个真正的工具),界面看着和modelsim差不多但是这个实实在在上了板子抓取信号都是真实的

工程注意事项

1、规范的代码,取名字怎么取,Verilog语法那么简单,硬件描述语言,描述是关键字。要读得懂,别人也要认识。以前别人怎么取你就怎么取,看看Altera或者xilinx官网一些工程源码就知道怎么做了。

2、时序约束这些是必须的

3、STA静态时序分析是必须的流程,看看最坏路径,看看过不过

4、仿真是需要的,流程化,大型工程需要这些没办法

5、文件夹怎么分怎么放代码仿真代码参考文件,一次学好终身受益

6、怎么产生IP怎么用,用EDA自带SOC工具叫什么QYS类似的分析

具体设计流程

1、先查资料有方案,协议用哪些资源(方案设计最难,脑子糊里糊涂就难做出来)

2、方案具体就是到

分成哪些模块,确保每个小模块你会写,比如说计数器、fifo、状态机

每个模块有哪些输入输出接口

模块间输入输出接口互联

3、然后开写,接口input、output会了,名字取好了。小模块或者IP写好了,然后例化连接就是,然后在整个工程慢慢修改,加啊删啊改啊

4、测试程序,分析要仿真哪些信号,写testbench,可以多个。这里有一些方法,要观察数据规律。就不具体,自己也搓。

平时学习(平时只能做到这些了,自学苦逼)

1、买个开发板实验挨个挨个试一遍

2、写小模块从门电路到异步fifo,加仿真,夏文宇或者随便一本教程都有

3、在那个网上找视频看看,最好是官网的

代码本来还准备传一下,发现名字取得不忍直视,有没注释自己都不爱看

实验室搬砖搬不动篇

写百兆以太网接口,现在都还没写出来

下面方法根本不适合没有上面基础的

1、知网同方学校图书馆下论文找相关书籍,了解参考,分析用到了些什么东西

2、源码参考,在IPCORE网上,度娘这些地方找。最好的是在FPGA官网上找,有用户手册有视频,有各种代码。所以说会英语是多么重要

3、大致方案,用哪家,用什么大的协议

4、如果是FPGA的话,真的能用IP用IP,先实现这个东西,可测试

5、有其他需求,自己写把IP换过来

强烈推荐知网和官网,只有这个两个不是高大上的设计都够了

xilinxfpga设计基础

第一章开发软件ISE与开发流程 LUT主要适合SRAM工艺生产,因此FPGA都是基于SRAM工艺的,掉电就会丢失。 设计输入 除了常见的文本输入,还可以采用图形输入方式: 单击Design Utilities->Creat Schematic Symbol,则会在工程文件夹下生成一个文件,同时这个生成的符号被加入到符号库中。这样可以添加元件。 用户约束文件UCF的编写: 管脚约束:如NET “” LOC = ; --将信号锁定到fpga的管脚。 时钟约束:如NET “” PERIOD = period {HIGH/LOW}[high or low time]。 采用图形化方法输入约束文件: 创建ucf文件,选择ucf文件,然后点击Processes->User Constrains->Create Timing Constraints添加时序约束;点击Processes->User Constrains->I/O Pin Planning添加管脚约束。 设计综合(Synthesize) 综合将概念性硬件描述语言HDL的设计定义转换成针对目标器件的逻辑或者物理表示。 XST(Xilinx Synthesis Tools)就是综合工具,其输出为Xilinx特有的NGC网表文件,NGC包含转化后的逻辑数据和约束信息。 综合是设计流程中的基本步骤,它将概念性硬件描述语言的设计定义转换为针对器件的逻辑或物理表示。在综合过程中,状态机是单独处理、独立分析的,根据综合的选项,综合器选择状态机在综合过程中选用的实现算法。 综合完成后,综合器会根据综合选项和XCF(XST Constraint File, 综合约束文件),对综合结果做一些基础的优化。 HDL文件 语法分析 检查语法错误 HDL综合 宏识别、优先状态机展开资源共享技术 底层优化 宏实现、时序优化映射、复制寄存器 NGR文件NGC文件LOG文件 功能仿真(Simulation->behavioral) 功能仿真可以对工程设计文件进行初步的功能验证。仿真软件将HDL语言转换为抽象的逻辑电路,忽略信号在逻辑器件和传输线上的延时,并对应各种可能的输入信号仿真得到设计工程的输出信号,检验输出信号是否满足预期的要求。

FPGA笔试题及答案总结

第 1 章 FPGA基础知识 1.1 FPGA设计工程师努力的方向 SOPC,高速串行I/O,低功耗,可靠性,可测试性和设计验证流程的优化等方面。随着芯片工艺的提高,芯片容量、集成度都在增加,FPGA 设计也朝着高速、高度集成、低功耗、高可靠性、高可测、可验证性发展。芯片可测、可验证,正在成为复杂设计所必备的条件,尽量在上板之前查出bug,将发现bug的时间提前,这也是一些公司花大力气设计仿真平台的原因。另外随着单板功能的提高、成本的压力,低功耗也逐渐进入FPGA设计者的考虑范围,完成相同的功能下,考虑如何能够使芯片的功耗最低。高速串行IO的应用,也丰富了FPGA 的应用范围,象xilinx的v2pro中的高速链路也逐渐被应用。总之,学无止境,当掌握一定概念、方法之后,就要开始考虑FPGA其它方面的问题了。 1.2 简述FPGA等可编程逻辑器件设计流程 系统设计电路构思,设计说明与设计划分,电路设计与输入(HDL代码、原理图),功能仿真与测试,逻辑综合,门级综合,逻辑验证与测试(综合后仿真),布局布线,时序仿真,板级验证与仿真,加载配置,在线调试。常用开发工具(Altera FPGA) HDL语言输入:Text Editor(HDL语言输入),还可以使用Ultra Edit 原理图输入:Schematic Editor IP Core输入:MegaWinzad 综合工具:Synplify/Synplify Pro,Qaustus II内嵌综合工具仿真工具:

ModelSim 实现与优化工具:Quartus II集成的实现工具有Assignment Editor(约束编辑器)、LogicLock(逻辑锁定工具)、PowerFit Fitter(布局布线器)、Timing Analyzer(时序分析器,STA分析工具)、Floorplan Editor(布局规划器)、Chip Editor(底层编辑器)、Design Space Explorer(设计空间管理器)、Design Assistant(检查设计可靠性)等。后端辅助工具:Assembler(编程文件生成工具),Programmer(下载编程工具),PowerGauge(功耗仿真器) 调试工具:SignalTap II(在线逻辑分析仪),SignalProbe(信号探针)。系统级设计环境:SOPC Builder,DSP Builder,Software Builder。 1.3 Quartus文件管理 1. 编译必需的文件:设计文件(.gdf、.bdf、EDIF输入文件、.tdf、verilog 设计文件、.vqm、.vt、VHDL设计文件、. vht)、存储器初始化文件(.mif、.rif、.hex)、配置文件(.qsf、.tcl)、工程文件(.qpf)。 2. 编译过程中生成的中间文件(.eqn文件和db目录下的所有文件.tdf,.hdb,.xml等) 3. 编译结束后生成的报告文件(.rpt、.qsmg 等) 4. 根据个人使用习惯生成的界面配置文件(.qws等) 5. 编程文件(.sof、.pof、.ttf等) 1.4 IC设计流程

FPGA笔试题汇总

=====================第1章FPGA基础知识=================== FPGA设计工程师努力的方向 SOPC,高速串行I/O,低功耗,可靠性,可测试性和设计验证流程的优化等方面。随着芯片工艺的提高,芯片容量、集成度都在增加,FPGA 设计也朝着高速、高度集成、低功耗、高可靠性、高可测、可验证性发展。芯片可测、可验证,正在成为复杂设计所必备的条件,尽量在上板之前查出bug,将发现bug的时间提前,这也是一些公司花大力气设计仿真平台的原因。另外随着单板功能的提高、成本的压力,低功耗也逐渐进入FPGA设计者的考虑范围,完成相同的功能下,考虑如何能够使芯片的功耗最低。高速串行IO的应用,也丰富了FPGA 的应用范围,象xilinx的v2pro中的高速链路也逐渐被应用。总之,学无止境,当掌握一定概念、方法之后,就要开始考虑FPGA其它方面的问题了。 简述FPGA等可编程逻辑器件设计流程 系统设计电路构思,设计说明与设计划分,电路设计与输入(HDL代码、原理图),功能仿真与测试,逻辑综合,门级综合,逻辑验证与测试(综合后仿真),布局布线,时序仿真,板级验证与仿真,加载配置,在线调试。常用开发工具(AlteraFPGA) HDL语言输入:TextEditor(HDL语言输入),还可以使用UltraEdit原理图输入:SchematicEditorIPCore输入:MegaWinzad 综合工具:Synplify/SynplifyPro,QaustusII内嵌综合工具仿真工具:ModelSim

实现与优化工具:QuartusII集成的实现工具有AssignmentEditor(约束编辑器)、LogicLock(逻辑锁定工具)、PowerFitFitter(布局布线器)、TimingAnalyzer(时序分析器,STA分析工具)、FloorplanEditor(布局规划器)、ChipEditor(底层编辑器)、DesignSpaceExplorer(设计空间管理器)、DesignAssistant(检查设计可靠性)等。后端辅助工具:Assembler(编程文件生成工具),Programmer(下载编程工具),PowerGauge(功耗仿真器) 调试工具:SignalTapII(在线逻辑分析仪),SignalProbe(信号探针)。系统级设计环境:SOPCBuilder,DSPBuilder,SoftwareBuilder。Quartus文件管理 1.编译必需的文件:设计文件(.gdf、.bdf、EDIF输入文件、.tdf、verilog 设计文件、.vqm、.vt、VHDL设计文件、.vht)、存储器初始化文件(.mif、.rif、.hex)、配置文件(.qsf、.tcl)、工程文件(.qpf)。 2.编译过程中生成的中间文件(.eqn文件和db目录下的所有文件.tdf,.hdb,.xml等) 3.编译结束后生成的报告文件(.rpt、.qsmg 等) 4.根据个人使用习惯生成的界面配置文件(.qws等) 5.编程文件(.sof、.pof、.ttf等) IC设计流程 写出一份设计规范,设计规范评估,选择芯片和工具,设计,(仿真,设计评估,综合,布局和布线,仿真和整体检验)检验,最终评估,系统集成与测试,产品运输。设计规则:使用自上而下的设计方法(行

PCIe总线基础及FPGA设计实战

PCI Express总线基础及FPGA设计实战 1. PCI Express基础 PCIe总线是基于PCI总线发展起来的,很多基本概念都来自于PCI总线,有必要在介绍PCIe之前了解PCI总线。 1.1 PCI基础 PCI总线作为处理器系统的局部总线,其主要目的是为了连接外部设备,而不是作为处理器系统的系统总线连接Cache和主存储器。PCI总线作为系统总线的延伸,其设计考虑了许多与处理器相关的内容,孤立的研究PCI总线并不可取,因此需要将PCI作为存储器系统的一个部分来研究。 1.1.1 几个重要概念 1)PCI总线空间与处理器空间隔离 PCI设备具有独立的地址空间,即PCI总线地址空间,该空间与存储器地址空间通过HOST 主桥隔离。处理器需要通过HOST主桥才能访问PCI设备,而PCI设备需要通过HOST主桥才能方位主存储器。 要注意区分存储器地址空间和PCI总线地址。在一个处理器系统中,存储器域、PCI总线域与HOST主桥的关系如下图。 图中的处理器系统由一个CPU、一个DRAM控制器和两个HOST主桥组成。在这个处理器系统中,包含CPU域、DRAM域、存储器域和PCI总线域地址空间。其中HOST主桥x和HOST主桥y分别管理PCI总线x域与PCI总线y域。CPU访问PCI设备,必须通过HOST主桥进行地址转换,而PCI设备访问存储器设备,也需要HOST主桥进行地址转换。HOST主桥

的一个重要作用就是将存储器访问的存储器地址转换成PCI总线地址。 CPU域地址空间是指CPU所能直接访问的地址空间集合。 DRAM域地址空间是指DRAM控制器所能访问的地址空间集合,又称为主主存储器域。 存储器域是CPU域和DRAM域的集合。存储器域包括CPU内部的通用寄存器、存储器映射寻址的寄存器、主存储器空间和外部设备空间。在Intel的x86处理系统中,外部设备空间与PCI总线域地址空间等效。因为在x86处理器系统中,使用PCI总线同一管理全部外部设备。 值得注意的是,存储器域的外部设备空间,在PCI总线域中还有一个地址映射。当处理器访问PCI设备时,首先访问的是这个设备在存储器域上的PCI设备空间,之后HOST主桥将这个存储器域的PCI总线地址转换成PCI总线域的物理地址,然后通过PCI总线事务访问PCI总线域的地址空间。 2)可扩展性 PCI总线具有很强的扩展性。在PCI总线中,HOST主桥可以直接推出一条PCI总线,这条总线也是该HOST主桥管理的第一条PCI总线,该总线还可以通过PCI桥扩展一系列PCI 总线,并以HOST主桥作为根节点,形成1棵PCI总线树。这些PCI总线都可以连接PCI设备,但是一棵PCI设备树上,最多只能挂接256个PCI设备(包括PCI桥)。 3)动态配置机制 PCI设备使用的地址可以根据需要由系统软件动态分配。PCI总线使用这种方式合理地解决设备间的地址冲突,从而实现了“即插即用”功能。每一个PCI设备都有独立的配置空间,在配置空间中包含该设备在PCI总线中使用的基地址即BAR地址,从而保证每一个PCI 设备使用的物理地址并不相同。PCI桥的配置空间中包含有其下PCI子树所能使用的地址范围。 x86系统的工作流程是:主板上的BIOS程序会扫描PCI/PCIE设备,读取其BAR空间的大小,动态地为PCI/PCIE设备分配地址空间。在调试过中发现,假如将BAR空间设置成2G,x86系统会报no bootable device的错误,原因应该是BIOS给PCIE设备分配了2G的地址空间,暂用了硬盘的地址空间,导致无法加载操作系统。 4)总线带宽 PCI总线与之前的局部总线相比,极大提高了数据传送带宽,32位/33MHz的PCI总线可以提供132MB/s的峰值带宽,而64位/66MHz的PCI总线可以提供的峰值带宽为532MB/s。虽然PCI总线所能提供的峰值带宽远不能和PCIe总线相比,但是与之前的局部总线ISA、EISA 和MCA总线相比,仍然具有极大的优势。 ISA总线的最高主频为8MHz,位宽为16,其峰值带宽为16MB/s;EISA总线的最高主频为8.33MHz,位宽为32,其峰值带宽为33MB/s;而MCA总线的最高主频为10MHz,最高位宽为32,其峰值带宽为40MB/s。PCI总线提供的峰值带宽远高于这些总线。 5)共享总线机制

FPGA课程设计(最终版)

课程设计任务书 学生姓名:专业班级: 指导教师:工作单位:信息工程学院 题目: 电子琴的设计 课程设计目的: 《FPGA原理与应用》课程设计的目的是为了让学生熟悉基于VHDL语言进行FPGA开发的全流程,并且利用FPGA设计进行专业课程理论知识的再现,让学生体会EDA技术的强大功能,为今后使用FPGA进行电子设计奠定基础。 课程设计内容和要求 设计内容: (1)设计一个八音电子琴。 (2)由键盘输入控制音响,同时可自动演奏乐曲。 (3)用户可以将自己编制的乐曲存入电子琴,演奏时可选择键盘输入乐曲或者已存入的乐曲。 要求每个学生单独完成课程设计内容,并写出课程设计说明书、说明书应该包括所涉及到的理论部分和充足的实验结果,给出程序清单,最后通过课程设计答辩。 时间安排: 所需时 序号阶段内容 间 1 方案设计1天 2 软件设计2天 3 系统调试1天 4 答辩1天 合计5天 指导教师签名:年月日

系主任(或责任教师)签名:年月日

目录 摘要 (1) Abstract (2) 1设计意义和要求 (3) 1.1设计意义 (3) 1.2功能要求 (3) 2方案论证及原理分析 (4) 2.1实现方案比较 (4) 2.2乐曲实现原理 (4) 2.3系统组成及工作原理 (6) 3系统模块设计 (8) 3.1顶层模块的设计 (8) 3.2乐曲自动演奏模块的设计 (8) 3.3音阶发生器模块的设计 (9) 3.4数控分频器模块的设计 (9) 4程序设计 (11) 4.1VHDL设计语言和ISE环境简介 (11) 4.2顶层模块的程序设计 (12) 4.3乐曲自动演奏模块的程序设计 (13) 4.4音阶发生器模块的程序设计 (13) 4.5数控分频模块的程序设计 (14) 5设计的仿真与实现 (15) 5.1乐曲自动演奏模块仿真 (15) 5.2音调发生模块仿真 (18) 5.3数控分频模块仿真 (19) 5.4电子琴系统的仿真 (20) 5.5设计的实现 (22) 5.6查看RTL视图 (23) 5.7查看综合报告 (25) 6心得体会 (31) 7参考文献 (32) 8附录 (33)

相关文档