FPGA基础知识培训-蒋伟(共69张)_第1页
FPGA基础知识培训-蒋伟(共69张)_第2页
FPGA基础知识培训-蒋伟(共69张)_第3页
FPGA基础知识培训-蒋伟(共69张)_第4页
FPGA基础知识培训-蒋伟(共69张)_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

产品研发中心应用产品组蒋伟2012年2月

FPGA内部技术培训目录2什么是FPGA?1VerilogHDL语言基础3如何使用ISE开发环境4FPGA开发实践1、什么是FPGA?1.1可编程逻辑器件基础1、什么是FPGA?1.1可编程逻辑器件基础18x18bitEmbeddedPipelinedMultipliersforefficientDSPConfigurable18KBlockRAMs+DistributedRAM4I/OBanks,Supportfor

allI/OStandardsincludingPCI™,DDR333,RSDS,mini-LVDSGuaranteedDensityMigrationNumerouspartsinthesamepackageUptoeighton-chipDigitalClockManagerstosupportmultiplesystemclocksBank0Bank1Bank

2Bank31.1可编程逻辑器件基础

可编程逻辑器件(ProgrammableLogicDevice,PLD)

顾名思义,完全由用户通过软件进行配置和编程,从而完成某种特定的功能,而且可以反复擦写的器件。

PLD产品

PROM编程只读存储器

FPLA现场可编程逻辑阵列

PAL可编程阵列逻辑

GAL通用阵列逻辑

EPLA可擦除的可编程逻辑阵列

CPLD复杂可编程逻辑器件

FPGA(FieldProgrammableArray)现场可编程门阵列,属于可编程逻辑器件的一种。通过可编程互连连接的可配置逻辑块(CLB)矩阵构成的可编程半导体器件。1、什么是FPGA?1.1可编程逻辑器件基础准确地将用户设计转换为电路模块能够高效地利用器件资源能够快速地完成编译和综合提供丰富的IP核资源用户界面友好,操作简单PLD开发软件

优秀的PLD开发软件Xilinx公司的ISEAltera公司的QuartusII、MaxplusII1、什么是FPGA?1.1可编程逻辑器件基础1.2FPGA工作原理四输入一输出的电路模块??ABZCD1、什么是FPGA?1.2FPGA工作原理查找表(Look-Up-Table)LUTLUT本质就是一个RAM。FPGA多使用4输入一输出的LUT,一个LUT等效于为一个有4位地址线的16×1的RAM。将真值表写入RAM后,每输入一个信号进行逻辑运算,就等于输入一个地址进行查表,找出地址对应的内容后输出即可。4-inputlogicfunctionLUT=CDZABTruthTable图1-1LUT原理示意图1、什么是FPGA?1.2FPGA工作原理FPGA工作原理的实质FPGA的工作状态实质是由片内RAM(LUT)决定的,所以通过对片内RAM进行编程(配置LUT,更新真值表),就能完成某种特定功能。1、什么是FPGA?1.2FPGA工作原理FPGA芯片结构

FPGA主要由6个部分组成:IOB(可配置输入输块)CLB(可配置逻辑块)DCM(时钟管理单元)BRAM(嵌入式块RAM)WIRE(布线资源)IP核(内嵌底层功能单元和专用硬件模块)1.3FPGA芯片结构1、什么是FPGA?1.2FPGA工作原理CLBCLBCLBCLBBRAMBRAMCLBCLBIOBIOBDCMIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOB图1-2FPGA芯片的内部结构1、什么是FPGA?1.2FPGA工作原理定义:芯片与外界电路的接口部分。

功能:

匹配不同的电气特性、I/O标准、I/O物理特性。比如调整驱动电流的大小、上下拉电阻、频率、TTL、LVDS。IOB(可编程输入输出块)WIRE(布线资源)布线资源用于连通FPGA内部的所有单元。

第一类:全局布线资源,用于芯片内部全局时钟和全局复位布线。

第二类:长线资源,用于BANK间的高速信号。

第三类:短线资源,用于基本逻辑单元间的互连和布线。

第四类:分布式资源,用于专用时钟、复位等控制信号。1、什么是FPGA?1.2FPGA工作原理BRAM(嵌入式块RAM)4096x4Dual-PortDOA[3:0]DOB[3:0]WEAENARSTAADDRA[11:0]CLKADIA[3:0]WEBENBRSTBADDRB[11:0]CLKBDIB[3:0]1、什么是FPGA?1.2FPGA工作原理BRAM(嵌入式块RAM)1、什么是FPGA?1.2FPGA工作原理DCM(时钟管理单元)1、什么是FPGA?1.2FPGA工作原理DCM(时钟管理单元)DCMDCMDCMDCM1、什么是FPGA?1.2FPGA工作原理CLB是FPGA内部基本的逻辑单元。

CLB包含:一个可配置的开关矩阵、一些选型电路(多路复用器)和触发器组成。CLB(可配置逻辑块)XILINX的CLB

CLB=SwitchMatrix+4Slice+附加逻辑。

(开关矩阵)(2SLICEM+2SLICEL)Slice是XILINX定义的基本逻辑单位。由2个4/6输入的查找表、进位逻辑、算数逻辑、存储逻辑、复用器组成。1、什么是FPGA?1.2FPGA工作原理CINSwitchMatrixCOUTCOUTSLICEMS0X0Y0SLICEMS1X0Y1SLICELS2X1Y0SLICELS3X1Y1CINSHIFTCLB示意图CLB(可配置逻辑块)1、什么是FPGA?1.2FPGA工作原理IP核:具有知识产权的集成电路芯核总称。分为软核、固核、硬核。IP核(内嵌底层功能单元和专用硬件模块)软核:对电路的硬件语言描述,包括逻辑描述、网表和帮助文档等,以用HDL文本形式提交给用户。

固核:

IP固核的设计程度则是介于软核和硬核之间,除了完成软核所有的设计外,还完成了门级电路综合和时序仿真等设计环节。一般以门级电路网表的形式提供给用户。

硬核:基于半导体工艺的物理设计,布局和工艺固定、经过前端和后端验证的设计,设计人员不能对其修改。其提供给用户的形式是电路物理结构掩模版图和全套工艺文件,是可以拿来就用的全套技术。

1、什么是FPGA?1.2FPGA工作原理1、什么是FPGA?1.3FPGA开发流程1.3FPGA开发流程FPGA设计方法硬件设计包括:FPGA芯片电路、存储器、输入\输出接口电路以及其他设备。软件设计思想:自顶向下顶层系统2级模块A2级模块B2级模块C3级模块A33级模块A23级模块A13级模块C23级模块C11、什么是FPGA?1.3FPGA开发流程软件设计流程1、什么是FPGA?1.4XILINX公司FPGA简介1.4XILINX公司FPGA简介XILINX公司目前有两大类FPGA产品:Spartan类和Virtex类。前者面向低成本的中低端应用。后者面向高端应用。两者的差异仅限于芯片的规模和专用模块上。1、什么是FPGA?1.4XILINX公司FPGA简介1.4XILINX公司FPGA简介2、VerilogHDL语言基础2.1VerilogHDL简介

HDL:具有特殊结构能够对硬件逻辑电路的功能进行描述的一种高级编程语言。

这种特殊结构能够: –描述电路的连接 –描述电路的功能 –在不同抽象级上描述电路 –描述电路的时序 –表达具有并行性HDL主要有两种:Verilog和VHDL。Verilog起源于C语言,因此非常类似于C语言,容易掌握什么是硬件描述语言HDL2、VerilogHDL语言基础2.1VerilogHDL简介•VerilogHDL是在1983年由GDA(GateWayDesignAutomation)公司的PhilMoorby所创。PhiMoorby后来成为Verilog-XL的主要设计者和Cadence公司的第一个合伙人。•在1984~1985年间,Moorby设计出了第一个Verilog-XL的仿真器。•1986年,Moorby提出了用于快速门级仿真的XL算法。•1990年,Cadence公司收购了GDA公司•1991年,Cadence公司公开发表Verilog语言,成立了OVI(OpenVerilogInternational)组织来负责VerilogHDL语言的发展。•1995年制定了VerilogHDL的IEEE标准,即IEEE1364。VerilogHDL的历史2、VerilogHDL语言基础2.1VerilogHDL简介二选一选择器的实现:modulemuxtwo(out,a,b,sel);inputa,b,sel;outputout;regout;always@(seloraorb)

if(!sel)out=a;elseout=b;endmoduleVerilogHDL的基本程序结构2、VerilogHDL语言基础2.2基本概念词法约定空白符:空格、换行、制表TAB。除了字符串中的空白符,空白符仅仅用于分辨标识符,编译的时候忽略。注释:单行注释//,多行注释/**/操作符:单目、双目、三目操作符数字声明:声明位数和不声明位数(默认十进制),建议声明位数。不确定值X,高阻值Z。8’b0x11_00z1,12’habc,16’d255,25,’o25,-6’d3字符串:”hello”标识符:字母、数字、_、$组成,区分大小写,第一个字符必须是字母或者下划线。关键字:特殊标识符,全小写。2、VerilogHDL语言基础2.2基本概念数据类型(表示数字电路硬件中的数据存储和传送元素)四值逻辑:0、1、X、Z主要包含:wire型、reg型、memory型和parameter型,共19种wire型

硬件单元之间的连接,连线。wirea,b,c=1’b1,d;wiree[7:0];//位宽为8的wire信号,向量2、VerilogHDL语言基础2.2基本概念reg型存储元件,保持原有数字,直到被改写。数据存储单元的抽象。rega,b,c=1’b1,d;//位宽为1的寄存器rege[7:0];//位宽为8的寄存器memory型对reg变量建立数组来对存储器建模,描述RAM、ROMrega[0,1024];//1K的1位寄存器reg[7:0]e[0:1024];//1K的8位寄存器,宽度和深度2、VerilogHDL语言基础2.2基本概念parameter型定义常量,提高可读性和可维护性parameter∏=3.1415926;parameter[3:0]S0=4’h0,S1=4’h1,S2=4’h2,S3=4’h3;2、VerilogHDL语言基础2.2基本概念integer、real、time、字符串型通用的寄存器数据类型,用于对数量进行操作。integercounter;integercounter[0:7];realdelay;timedelaytime;real[8*3-1,0]string;string=“boy”;2、VerilogHDL语言基础2.2基本概念编译指令‘define:定义文本宏

‘defineWordSize16’include:将一个Verilog文件包含在另一个Verilog文件中‘include“moled.v”2、VerilogHDL语言基础2.3操作符和表达式算术操作符2、VerilogHDL语言基础2.3操作符和表达式关系操作符2、VerilogHDL语言基础2.3操作符和表达式逻辑操作符2、VerilogHDL语言基础2.3操作符和表达式按位操作符2、VerilogHDL语言基础2.3操作符和表达式等价操作符2、VerilogHDL语言基础2.3操作符和表达式条件操作符、移位操作符、拼接操作符、缩减操作符、2、VerilogHDL语言基础2.3操作符和表达式缩减操作符A=4’b0110;&A;//相当于0&1&1&02、VerilogHDL语言基础2.3操作符和表达式条件操作符、拼接操作符、缩减操作符条件运算符:?:A?B:C拼接运算符:{,}A=4’b0100;B=4’b1100;C=4’b1001;Y={A,B,C,4’b0010}=0100_1100_1001_0010;2、VerilogHDL语言基础2.3操作符符和表达式操作符优先级2、VerilogHDL语言基础2.3运算符和表达式赋值运算符=,<=A=b;c=1’b1;//阻塞赋值??C<=d;d<=2’b01;//非阻塞赋值??2、VerilogHDL语言基础2.4模块和端口模块•module能够表示:–物理块,如IC或ASIC单元–逻辑块,如一个CPU设计的ALU部分–整个系统•每一个模块的描述从关键词module开始,有一个名称(如SN74LS74,DFF,ALU等等),由关键词endmodule结束。2、VerilogHDL语言基础2.4模块和端口端口•注意模块的名称DFF,端口列表及说明•模块通过端口与外部通信2、VerilogHDL语言基础2.4模块和端口端口列表和声明module(sum,clk,a,b,c_in);inputclk,a,c_in;//wireoutputsum;inoutb;//wireregsum;endmodule2、VerilogHDL语言基础2.4模块和端口模块例化2、VerilogHDL语言基础2.5门级建模(结构化描述)门类型and,or,xor,buf,not,nand,nor,xnor举例:moduleadder(A,B,Cin,Sum,Count);

xorx1(S1,A,B);xorx2(Sum,S1,Cin);andA1(T3,A,B);andA2(T2,B,Cin);andA3(T1,A,Cin);orO1(Cout,T1,T2,T3);endmodule定义:对电路结构的描述2、VerilogHDL语言基础2.6数据流建模语法格式:assignL_S=R_S;采用assign连续赋值来实现,只能实现组合逻辑。左值必须是线网(标量或者向量),右值可以是线网、寄存器、函数调用。赋值语句总是处于激活状态,只要右边操作数发生变化,立即将结果赋给左边的线网。module(out,sum,a,b,c,d,e,f);inputa,b,e,f;input[15:0]c,d;outputout,sum;assignout=a&b;assignout[15:0]=c[15:0]&d[15:0];assign#10out=e&f;endmodule定义:对数据流的具体行为的描述2、VerilogHDL语言基础2.7行为级建模定义:对电路外部行为的角度进行描述。行为级建模主要包括:过程结构、语句块、时序控制、流控制过程结构过程结构采用4种过程语句来实现:initial语句、always语句、task语句、function语句initial语句、always语句又是最基本的两种语句,其他所有行为语句都只能出现在这个两个语句中。initial语句只用于仿真,不可综合。always语句可被综合。initial语句、always语句都是同时并行执行,但initial语句只执行一次,always语句则是重复执行。只有寄存器类型信号才可以在initial语句、always语句被赋值2、VerilogHDL语言基础2.7行为级建模initial语句语法格式:initialbegin/fork………………//块能变量说明、行为语句end/join应用举例:

modulestimulus;rega,b,c;initiala=1’b1;initialbegin#5b=1’b1;#10c=1’b1;endendmodule2、VerilogHDL语言基础2.7行为级建模always语句语法格式:always@(敏感事件列表)begin/fork………………//块能变量说明、行为语句end/join//实现组合逻辑和时序逻辑应用举例:

modulestimulus;rega,b,c,d;always@(posedgeclk)begininitialbegin…a=0;b=0;c=0;endend………………alwaysbeginalways@(aorborc)begin#2a=~a;d=a?b:c;alwaysbeginend#5b=~b;#10c=~c;endendmodule组合逻辑中,敏感变量(等式右边所有的标识符)必须全写。组合逻辑中,使用阻塞赋值“=”时序逻辑中采用非阻塞赋值“<=”2、VerilogHDL语言基础2.7行为级建模过程赋值语句更新寄存器、整数、实数或者时间变量。只有在执行到的时候才起作用。分为:阻塞赋值”=“与非阻塞赋值语句”<=“moduleinitialbegina=1’b1;#5b=1’b1;#10c=1’b1;endendmodulemoduleinitialbegina<=1’b1;#5b<=1’b1;#10c<=1’b1;endendmodule允许赋值调度!2、VerilogHDL语言基础2.7行为级建模语句块在initial语句或always语句中,位于begin...end/fork…join块语句之间的一组行为语句。两者可混合使用(包括嵌套使用)。begin

……end:用来组合需要顺序执行的语句,称为顺序块。initialbegina=1’b0;b=1’b1;c={a,b};d={b,c};endfork……join:用来组合并行执行的语句,称为并行块。initialforka=1’b0;b=1’b1;c={a,b};//竞争!(同一时刻对同一变量产生影响)d={b,c};//竞争!

join2、VerilogHDL语言基础2.7行为级建模时序控制分为:延时控制和事件控制延时控制:#5a=b;事件控制:@(aorborc)等价@(a,b,c)@(posedgeclk)2、VerilogHDL语言基础2.7行为级建模流控制流控制语句包括:跳转、分支和循环语句if语句if()elseif()elsecase语句case()casex()casez()

表达式:声明;default:声明;endcaseendcaseendcase循环语句

for()、while()、forever、repeat2、VerilogHDL语言基础2.7行为级建模task任务声明:task………endtaskmodulefpga_train();

always@(posedgeclk1)

beginand_operation(ab_and,a,b);//变量的指定必须按照定义的顺序!

end

always@(posedgeclk2)

beginand_operation(cd_and,c,d);endtask

automaticand_operation;//自动任务

outputab_and_inst;inputa_inst,b_inst;

beginab_and_inst=a_inst&b_inst;endendtask;endmodule2、VerilogHDL语言基础2.7行为级建模function任务modulefpga_train();

always@(posedgeclk1)

beginc=and_operation(a,b);endfunctionautomatic[7:0]and_operation;//自动函数,生成一个名为函数标识符的寄存器变量

inputa_inst,b_inst;

beginand_operation=a_inst&b_inst;endendfunction;endmodule2、VerilogHDL语言基础2.7行为级建模task和function的区别1、函数至少有一个输入变量,任务不定。2、函数必须有一个返回值。任务不返回值,可通过OUT变量传递值。3、函数不能包含延迟、事件、时序控制,任务可包含。4、函数可调用函数,不能调用任务。任务可调用任务和函数。ImplementingaDesignintoaXilinxDeviceTranslateMapPlace&RoutePlan&

BudgetHDLRTLSimulationSynthesizetoCreateNetlistFunctionalSimulationCreate

BITFileAttainTimingClosureTimingSimulationImplementCreateCode/Schematic3、如何使用ISE开发环境3.1ISE开发流程ProjectNavigatoristheGraphicalInterfacetotheISEToolSuiteProjectNavigatorwindowsSourcesProcessesSummaryWorkingMessage3、如何使用ISE开发环境3.2ISE交互窗口CreatingaProjectSelectFile

NewProjectNewProjectWizardguidesyouthrough

theprocessProjectname

andlocationTargetdeviceSoftwareflowCreateoraddsourcefiles3、如何使用ISE开发环境3.2ISE交互窗口CreatingandAddingSourceFilesClickCreateNewSourceandchoosethetypeoffiletocreateanewsourcefileHDLIPConstrai

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论