FPGA设计基础.ppt_第1页
FPGA设计基础.ppt_第2页
FPGA设计基础.ppt_第3页
FPGA设计基础.ppt_第4页
FPGA设计基础.ppt_第5页
免费预览已结束,剩余55页可下载查看

下载本文档

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

文档简介

FPGA设计基础 重点 VerilogHDL基础知识 嵌入式处理器介绍 FPGA设计流程 概述 HDL HardwareDescriptionLanguage 是一种用形式化方法来描述数字电路和数字逻辑系统的硬件描述语言 有两种类型 VHDL和VerilogHDL 1VerilogHDL基础知识 VerilogHDL语言具有这样的描述能力 设计的行为特性 设计的数据流特性 设计的结构组成 以及包含响应监控与设计验证方面的时延和波形产生机制 Verilog与C语言的比较 1 Verilog是一种硬件语言 最终是为了产生实际的硬件电路或对硬件电路进行仿真 而C语言是一种软件语言 是控制硬件来实现某些功能的语言 2 C语言只要是语法正确 都可以编译执行 而Verilog语言有可综合的限制 即在所有的Verilog语句中 只有一部分可以被综合 而另外的部分则不能被综合 只能用来仿真 3 C语言是一种软件编程语言 其基本思想是语句的循序执行 而Verilog语言的基本思想是模块的并行执行 4 利用Verilog编程时 要时刻记得Verilog是硬件语言 要时刻将Verilog与硬件电路对应起来 常用的C语言与Verilog语言相对应的关键字与控制结构 常用的C语言与Verilog语言相对应的运算符 自顶向下的设计方法 通过自顶向下的设计方法 可以实现设计的结构化 可以使一个复杂的系统设计由多个设计者分工合作 还可以实现层次化的管理 模块 模块 module 是Verilog的基本描述单位 用于描述某个设计的功能或结构以及与其他模块通信的外部端口 例 3位加法器的形成语言为moduleaddr a b cin count sum 模块名及输入输出端口列表input 2 0 a 定义信号流向及位宽input 2 0 b inputcin outputcount output 2 0 sum assign count sum a b cin 功能描述endmodule VerilogHDL基本语法 VerilogHDL中的标识符可以是任意一组字母 数字 符号和 下划线 符号的组合 但标识符的第一个字符必须是字母或者下划线 另外 标识符是区分大小写的 1 标识符 例 CountCOUNT 与Count不同R56 68FIVE VerilogHDL定义的一些常用的关键词 2 注释 VerilogHDL中有两种注释方式 一种是以 符号开始 结束 在两个符号之间的语句都是注释语句 因此可扩展到多行 例 statement1 statement2 statementn 另一种是以 开头的语句 它表示以 开始到本行结束都属于注释语句 3 格式 VerilogHDL是区分大小写的 即大小写不同的标识符是不同的 另外其书写格式自由 即一条语句可多行书写 一行可写多个语句 空白 新行 制表符 空格 没有特殊意义 例 inputA inputB 与inputA inputB 是一样的 4 数字值集合 1 值集合 VerilogHDL中规定了四种基本的值类型 这四类基本值组成了VerilogHDL中的常量 即0 逻辑0或 假 1 逻辑1或 真 X 未知值 Z 高阻 注意 这四种值的解释都内置于语言中 如一个为z的值总是意味着高阻抗 一个为0的值通常是指逻辑0 在门的输入或一个表达式中为 z 的值通常解释成 x 此外 x值和z值都是不分大小写的 也就是说 值0 x1z与值0X1Z相同 2 常量 VerilogHDL中有三种常量 整型 实型和字符串型 下划线符号 可以随意用在整数或实数中 它们就数量本身没有意义 可用来提高易读性 唯一的限制是下划线符号不能用做首字符 整型数可以按如下两种方式书写 十进制形式整数的例子 32十进制数32 15十进制数 15 基数表示形式整数的例子 5 O375位八进制数 二进制11111 4 D24位十进制数 二进制0011 4 B1x 014位二进制数7 Hx7位x 扩展的x 即xxxxxxx4 hZ4位z 扩展的z 即zzzz4 d 4非法 数值不能为负8 h2A在位长和字符之间 以及基数和数值之间允许出现空格3 b001非法 和基数b之间不允许出现空格 2 3 b10非法 位长不能够为表达式 实型数可以用下列两种形式定义 十进制计数法2 05 67811572 120 12 非法 小数点两侧必须有1位数字 科学计数法23 5 1e2其值为23510 0 忽略下划线3 6E2其值为360 0 e与E相同 5E 4其值为0 0005 字符串是双引号内的字符序列 字符串不能分成多行书写 INTERNALERROR REACHED HERE 用8位ASCII值表示的字符可看做是无符号整数 因此字符串是8位ASCII值的序列 为存储字符串 INTERNALERROR 变量需要8 14位 reg 1 8 14 Message Message INTERNALERROR 5 数据类型 VerilogHDL主要包括两种数据类型 线网类型 nettype 寄存器类型 regtype 1 线网类型 线网类型主要有wire和tri两种 线网类型用于对结构化器件之间的物理连线进行建模 如器件的管脚 内部器件如与门的输出等 线网类型代表的是物理连接线 因此它不存贮逻辑值 必须由器件所驱动 通常由assign进行赋值 如assignA B C reg是最常用的寄存器类型 寄存器类型通常用于对存储单元进行描述 如D触发器 ROM等 2 寄存器类型 寄存器类型的存储单元建模举例用寄存器类型来构建两位D触发器如下 reg 1 0 Dout always posedgeClk Dout Din 6 运算符和表达式 常用的算术运算符主要有加法 二元运算符 减法 二元运算符 乘法 二元运算符 1 算术操作结果的位数长度 算术表达式结果的长度由最长的操作数决定 在赋值语句中 算术操作结果的长度由操作符左端目标长度决定 reg 3 0 Arc Bar Crt reg 5 0 Frx Arc Bar Crt Frx Bar Crt 第一个加法操作的长度由Bar Crt和Arc的长度决定 长度为4位 第二个加法操作的长度由Frx的长度决定 Frx Bat和Crt中的最长长度 长度为6位 例如 2 关系运算符 关系操作符的结果为真 1 或假 0 如果操作数中有一位为X或Z 那么结果为X 例如 23 45结果为假 0 52 b01110等价于 b01000 b01110结果为假 0 大于 不小于 不大于 逻辑相等 逻辑不等 3 逻辑运算符 这些运算符在逻辑值0 假 或1 真 上操作 逻辑运算的结果为0或1 例如 假定Crd b0 0为假Dgs b1 1为真那么Crd Dgs的结果为0 假 Crd Dgs的结果为1 真 Dgs的结果为0 假 逻辑与 逻辑或 逻辑非 用法为 表达式1 逻辑运算符 表达式2 这些操作符在输入操作数的对应位上按位操作 并产生向量结果 例如 假定A b0110 B b0100 那么A B的结果为0110 A B的结果为0100 如果操作数长度不相等 长度较小的操作数在最左侧添0补位 例如 b0110 b10000与下面的操作相同 b00110 b10000结果为 b10110 4 按位逻辑运算符 一元非 相当于非门运算 二元与 相当于与门运算 二元或 相当于或门运算 二元异或 相当于异或门运算 二元异或非即同或 相当于同或门运算 5 条件运算符 如果cond expr为真 即值为1 选择expr1 如果cond expr为假 值为0 选择expr2 如果cond expr为x或z 结果将是按以下逻辑expr1和expr2按位操作的值 0与0得0 1与1得1 其余情况为x 条件操作符根据条件表达式的值选择表达式 形式如下 cond expr expr1 expr2 5 连接运算符 例如 wire 7 0 Dbus assignDbus 7 4 Dbus 0 Dbus 1 Dbus 2 Dbus 3 以反转的顺序将低端4位赋给高端4位assignDbus Dbus 3 0 Dbus 7 4 高4位与低4位交换由于非定长常数的长度未知 不允许连接非定长常数 例如 下列式子非法 Dbus 5 不允许连接操作非定长常数 连接操作是将小表达式合并形成大表达式的操作 形式如下 expr1 expr2 exprN 7 条件语句 如果对condition 1求值的结果为非零值 那么procedural statement 1被执行 如果condition 1的值为0 x或z 那么procedural statement 1不执行 如果存在一个else分支 那么这个分支被执行 if语句的语法如下 if condition 1 procedural statement 1 elseif condition 2 procedural statement 2 elseprocedural statement 3 例如 if Sum 60 beginGrade C Total C Total c 1 endelseif Sum 75 beginGrade B Total B Total B 1 endelsebeginGrade A Total A Total A 1 end注意 条件表达式必须总是被括起来的 8 case语句 case语句首先对条件表达式case expr求值 然后依次对各分支项求值并进行比较 第一个与条件表达式值相匹配的分支中的语句被执行 可以在1个分支中定义多个分支项 这些值不需要互斥 缺省分支覆盖所有没有被分支表达式覆盖的其他分支 case语句是一个多路条件分支形式 其语法如下 case case expr case item expr case item expr procedural statement default procedural statement endcase 例如 case HEX 4 b0001 LED 7 b1111001 14 b0010 LED 7 b0100100 24 b0011 LED 7 b0110000 34 b0100 LED 7 b0011001 44 b0101 LED 7 b0010010 54 b0110 LED 7 b0000010 64 b0111 LED 7 b1111000 74 b1000 LED 7 b0000000 84 b1001 LED 7 b0010000 94 b1010 LED 7 b0001000 A4 b1011 LED 7 b0000011 B4 b1100 LED 7 b1000110 C4 b1101 LED 7 b0100001 D4 b1110 LED 7 b0000110 E4 b1111 LED 7 b0001110 Fdefault LED 7 b1000000 0endcase 7 例化语句 模块例化语句形式为module nameinstance name port associations 1 定义 信号端口可以通过位置或名称关联 但是关联方式不能够混合使用 端口关联形式如下 port expr 通过位置 PortName port expr 通过名称 例如 moduleand C A B inputA B outputC andA1 T3 A B 实例化时采用位置关联 T3对应输出端口C A对应A B对应BandA2 实例化时采用名字关联 C是and器件的端口 其与信号T3相连 C T3 A A B B port expr可以是以下的任何类型 1 标识符 reg或net 如 C T3 T3为wire型标识符 2 位选择 如 C D 0 C端口接到D信号的第0bit位 3 部分选择 如 Bus Din 5 4 4 上述类型的合并 如 Addr A1 A2 10 5 表达式 只适用于输入端口 如 A wireZire 0 2 悬空端口的处理 在实际例化中 可能有些管脚没用到 可在映射中采用空白处理 如DFFd1 Q QS Qbar Data D Preset 该管脚悬空 Clock CK 名称对应方式若输入管脚悬空 则该管脚输入为高阻Z 若输出管脚被悬空 则该输出管脚废弃不用 3 不同端口长度的处理 当端口和局部端口表达式的长度不同时 端口通过无符号数的右对齐或截断方式进行匹配 8 连续赋值语句 数据流的描述是采用连续赋值语句 assign 语句来实现的 语法如下 assignnet type 表达式 连续赋值语句用于组合逻辑的建模 等式左边是wire类型的变量 等式右边可以是常量 或是由运算符如逻辑运算符 算术运算符参与的表达 例如 wire 3 0 Z Preset Clear 线网说明assignZ Preset 连续赋值语句 注意两个方面的问题 1 连续赋值语句的执行是 只要右边表达式任一个变量有变化 表达式立即被计算 计算的结果立即赋给左边信号 2 连续赋值语句之间是并行语句 因此与位置顺序无关 9 阻塞赋值语句与非阻塞赋值语句 阻塞赋值语句 从字面上理解 该条语句阻塞了下面语句的执行 用于阻塞的赋值 凡是在组合逻辑 如在assign语句中 赋值的请用阻塞赋值 非阻塞赋值操作符用小于等于号 即 表示 只能用于对寄存器类型变量进行赋值 因此只能用在 initial 和 always 等过程块中 10 过程赋值语句 VerilogHDL中提供两种过程赋值语句initial和always 这两种语句之间的执行是并行的 即语句的执行与位置顺序无关 这两种语句通常与语句块 begin end 相结合 则语句块中的执行是按顺序执行的 例如 initialClk 0 always 5Clk Clk 因为always语句是重复执行的 因此Clk是初始值为0 周期为10的方波 嵌入式处理器的体系结构 2嵌入式处理器介绍 嵌入式处理器 嵌入式微处理器的基础是通用计算机中的CPU 在应用中 将微处理器装配在专门设计的电路板上 只保留和嵌入式应用有关的功能 这样可以大幅度减小系统体积和功耗 为了满足嵌入式应用的特殊要求 嵌入式微处理器虽然在功能上和标准微处理器基本是一样的 但在工作温度 抗电磁干扰 可靠性等方面一般都做了各种增强 嵌入式处理器目前主要有Am186 88 386EX SC 400 PowerPC 68000 MIPS ARM系列等 嵌入式微处理器又可分为CISC和RISC两类 嵌入式微控制器 嵌入式微控制器又称为单片机 顾名思义 就是将整个计算机系统集成到一块芯片中 嵌入式微控制器一般以某一种微处理器内核为核心 芯片内部集成ROM EPROM RAM 总线 总线逻辑 定时 计数器 WatchDog I O 串行口 脉宽调制输出 A D D A FlashRAM EEPROM等各种必要功能模块 为适应不同的应用需求 一般一个系列的单片机具有多种衍生产品 每种衍生产品的处理器内核都是一样的 不同的是存储器和外设的配置及封装 这样可以使单片机最大限度地和应用需求相匹配 从而减少功耗和成本 嵌入式DSP处理器 嵌入式微控制器又称为单片机 顾名思义 就是将整个计算机系统集成到一块芯片中 嵌入式微控制器一般以某一种微处理器内核为核心 芯片内部集成ROM EPROM RAM 总线 总线逻辑 定时 计数器 WatchDog I O 串行口 脉宽调制输出 A D D A FlashRAM EEPROM等各种必要功能模块 为适应不同的应用需求 一般一个系列的单片机具有多种衍生产品 每种衍生产品的处理器内核都是一样的 不同的是存储器和外设的配置及封装 这样可以使单片机最大限度地和应用需求相匹配 从而减少功耗和成本 嵌入式片上系统 随着VLSI设计的普及化及半导体工艺的迅速发展 可以在一块硅片上实现一个更为复杂的系统 这就是SystemOnChip SoC 各种通用处理器内核将作为SoC设计公司的标准库 和许多其他嵌入式系统外设一样 成为VLSI设计中一种标准的器件 用标准的VHDL等语言描述 存储在器件库中 用户只需定义出整个应用系统 仿真通过后就可以将设计图交给半导体工厂制作样品 这样除个别无法集成的器件以外 整个嵌入式系统大部分均可集成到一块或几块芯片中去 应用系统电路板将变得很简洁 对于减小体积和功耗 提高可靠性非常有利 SoC可以分为通用和专用两类 通用系列包括Motorola的M Core 某些ARM系列器件 Echelon和Motorola联合研制的Neuron芯片等 FPGA嵌入式处理器 1 PowerPC405 2 CPU FGPA接口 CPU FGPA接口主要用于PowerPC405模块与FPGA其他资源的相互连接 1 处理器局部总线接口用于PowerPC405模块与外部资源的高速连接 它支持32bit地址宽度和64bit数据宽度 PLB包括ISPLB和DSPLB两部分 ISPLB接口用于外部设备与PowerPC指令缓存的连接 DSPLB接口用于外部设备与PowerPC405数据缓存的连接 2 设备控制寄存器接口用于PowerPC405模块与外部设备的状态寄存器和配置寄存器的连接 它支持10bit地址宽度和32bit数据宽度 3 片上存储器接口用于PowerPC405模块与FPGA内部BRAM的直接连接 通常ISBRAM用于存放启动代码 中断向量和中断处理等 DSRAM用于中断数据或关键数据存储 4 外部中断控制接口用于PowerPC405模块与外部中断的连接 它支持关键和非关键两级中断 5 时钟电源管理接口用于PowerPC405模块与外部时钟信号和电源信号的连接 6 初始化接口用于PowerPC405模块与外部初始化信号的连接 它支持Core Chip System三级初始化 7 调试接口用于PowerPC405模块的跟踪和调试 通过JIAG边缘扫描功能提供系统内部测试和调试功能 3 PowerPC405RISC硬核特点 1 高性能RISC运行速率可达300MHz 2 支持低损耗设计 3 支持PowerPC用户指令集 UISA 包括用户应用级的指令和这些指令访问的寄存器 UISA还定义了与指令相关的参数 例如寻址方式和指令格式 4 具有32个32bit的通用寄存器 16kb指令缓存和16kb数据缓存 5 支持IBMCoreConnect总线结构和专用片上存储接口 OCM 总线包括处理器局部总线PLB 片上外设总线OPB和设备控制存储器DCR PLB总线接口用于PowerPC405内核与高性能设备的连接 PLB接口包括ISPLB接口和DSPLB接口两种 其中 ISPLB接口用于外设与PowerPC405指令缓冲的连接 DSPLB接口用于外设与PowerPC405数据缓冲的连接 6 支持多种调试方式和二级中断 4 CoreConnect技术 CoreConnect是由IBM开发的片上总线通信链 它使多个芯片核相互连接成为一个完整的新芯片成为可能 CoreConnect技术使整合变得更为容易 而且在标准产品平台设计中 处理器 系统以及外围的核可以重复使用 以达到更高的整体系统性能 CoreConnect结构提供处理器局部总线 PLB 片内外设总线 OPB 和设备控制寄存器 DCR 总线 利用这三个总线来互联处理器模块 XilinxIP软核 第三方IP核和定制的逻辑 高性能外设连接到高带宽低滞后的PLB总线 较慢速的外设连接到OPB总线 可以减少PLB总线的流量 提高整个系统的性能 CoreConnect总线架构框图 5 MicroBlaze MicroBlaze是基于Xilinx公司FPGA的微处理器IP核 与其他外设IP核一起 可以完成可编程系统芯片 SOPC 的设计 MicroBlaze处理器采用RISC架构和哈佛结构的32位指令和数据总线 内部有32个32位宽度的通用寄存器 在150MHz的时钟频率下 最高可达到125DMIPS的处理性能 可以全速执行存储在片上存储器和外部存储器中的程序 并和其他外设IP核一起 完成可编程系统芯片 SOPC 的设计 MicroBlaze的内部结构框图 MicroBlaze系统架构框图 6 MicroBlaze与PowerPC405的比较 PowerPC是硬核处理器 而Microblaze处理器则是用FPGA芯片的逻辑资源生成的软核处理器 这使得它可以在更多的场合被选用 这两种处理器都是32位的哈佛体系结构的RISC处理器 所支持的指令集系统也都比较丰富 理论上讲 利用它们加上合适的外设都可以搭建出所需的系统硬件电路 只是由于这两种处理器的系统架构不一样 在选择外设IP核时会不一样 具体搭建电路要根据具体的应用来选择 PowerPC硬核处理器和Microblaze软核处理器都是Xilinx公司FPGA系列芯片中的嵌入式微处理器 Xilinx公司的VertexIIPro和Vertex4 FX嵌入了PowerPC405的硬核 Spartan 3E和Virtex 5嵌入了Microblaze软核处理器 3FPGA设计流程 FPGA的基本开发流程主要包括设计输入 DesignEntry 设计仿真 Simulation 设计综合 Synthesize 布局布线 Place Route 配置 Configuration 这五个主要步骤 集成综合环境 ISE 的功能涵盖了FPGA开发的全过程 从功能上讲 其工作流程无需借助任何第三方EDA软件 FPGA的一般开发流程 1 设计输入 设计输入是根据工程师的设计方法将所设计的功能描述给EDA软件 常用的设计输入方法有硬件描述语言HDL和原理图设计输入方法 原理图设计输入法在早期应用得比较广泛 它根据设计要求 选用器件 绘制原理图 完成输入过程 这种方法的优点是直观 便于理解 元件库资源丰富 但是在大型设计中 这种方法的可维护性较差 不利于模块建设与重用 ISE提供的设计输入工具包括用于HDL代码输入和查看报告的文本编辑器 ISETextEditor 用于原理图编辑的工具ECS EnginerringCaptureSystem 用于生成IPCore的CoreGenerator 用于状态机设计的StateCAD以及用于约束文件编辑的ConstraintEditor等 2 设计综合 综合优化 Synthesize 是指将HDL语言 原理图等设计输入翻译成由与门 或门 非门 RAM 寄存器等基本逻辑单元组成的逻辑连接 网表 并根据目标与要求 约束条件 优化所生成的逻辑连接 输出edf和edn等文

温馨提示

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

评论

0/150

提交评论