清华课件eda技术与fpga设计_第1页
清华课件eda技术与fpga设计_第2页
清华课件eda技术与fpga设计_第3页
清华课件eda技术与fpga设计_第4页
清华课件eda技术与fpga设计_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

1,EDA技术与FPGA设计,清华大学电子实践基地 许忠信 ,FPGA设计课程大纲,2,3,两种数字系统设计方法,基于电路板的设计方法采用固定功能的器件(通用型器件),通过设计电路板来实现系统功能 基于芯片的设计方法采用PLD(可编程逻辑器件),利用EDA开发工具,通过芯片设计来实现系统功能。,4,实现载体的变迁,集成于片上而不是集成于板上;,5,设计方法的变迁,借助于EDA工具而不是手工设计;,6,掌握EDA技术有什么用呢?,真有趣,可以按自己的想法设计一个芯片!,我要报名参加SRT研究项目!我要参加大学生电子设计竞赛!,哇,毕业设计和研究生项目正好能用得上哎!,原来在一个芯片里就可以设计一个完整的计算机系统呀!,找工作也算得上一技之长哦!,7,EDA技术范畴,ASIC设计 PLD设计(FPGA/CPLD) PCB设计,8,查找题名含FPGA的硕士论文,9,EDA技术,什么是EDA技术 EDA技术是以计算机为工作平台、以EDA软件工具为开发环境、以硬件描述语言(HDL)为设计语言、以可编程逻辑器件(PLD)或ASIC为实现载体,以帮助电子设计工程师进行电子产品自动化设计的综合技术。 在EDA软件平台上,根据硬件描述语言完成的设计文件,自动地进行逻辑编译、化简、分割、综合及优化、布局布线、仿真、目标芯片的适配编译、逻辑映射和编程下载,直至实现既定的电子系统。,10,本实验采用的开发环境,EDA硬件实验平台 DE2-70多媒体开发板 目标芯片:EP2C70F896C6,属Altera公司CycloneII系列的一种FPGA芯片 硬件描述语言:VHDL EDA软件工具:Altera公司的Quartus II8.0,11,可编程逻辑器件(PLD),可编程逻辑器件PLD(Programmable Logic Device)是一种半定制集成电路,在其内部集成了大量的门和触发器等基本逻辑电路,用户通过编程来改变PLD内部的逻辑关系或连线,就可以得到需要的设计电路。 可编程编程逻辑器件的出现,改变了传统的数字系统设计方法,为采用EDA技术开创了广阔的发展空间,并极大地提高了电路设计效率。,12,PLD分类,按集成度分类: 一般以GAL22V10芯片为分水岭 低密度可编程逻辑器件LDPLD 高密度可编程逻辑器件HDPLD,13,CPLD结构特点与工作原理,多采用E2CMOS工艺,也包含EEPROM、Flash、Anti-Fuse等工艺,可实现掉电保护 基于乘积项结构,逻辑单元大,容量小 采用集中式布线池结构,延时可预测,14,CPLD的结构与工作原理,以Altera公司MAX7000系列器件为例 MAX7000系列器件结构组成 逻辑阵列块 宏单元 扩展乘积项 可编程互联阵列 I/O控制块,15,CPLD的结构与工作原理 MAX7000系列宏单元结构,16,FPGA结构特点与工作原理,基于SRAM查找表结构 逻辑单元颗粒小 具有丰富的布线资源,布线资源连通FPGA内部所有单元,延时不可预测 时序逻辑资源丰富,可实现较复杂的时序功能 容量大:Xilinx公司的FPGA可达800万门; Altera公司的FPGA可达400万门。,17,FPGA实现细节,NMOS晶体管作为可编程开关 编程信息保存在SRAM中, 断电后信息消失; 每次加电时都要给SRAM输入编程信息;,18,FPGA的结构与工作原理,查找表逻辑结构,图3-32 FPGA查找表单元,19,查找表逻辑结构,将4输入真值表的输出写入161 RAM 4个输入变量作为查找表的地址,20,FPGA的基本单元,21,FPGA与CPLD比较,22,EDA实验开发系统,DE2 康芯 清华科仪,革新 百科融创 掌宇,EDA实验开发系统性能指标: 主芯片资源及性能 外围设备及接口,显示度 通用性、灵活性 二次开发,用于电子设计大赛 部分品牌,23,DE2开发装置介绍,24,Quartus II,Quartus II是Altera公司为其FPGA/CPLD芯片设计的集成化专用开发软件 Quartus II前身是Max Plus II, Quartus II每半年出一个新版本 2006年12月推出Quartus II 6.1 2008年春季推出Quartus II 8.0 Quartus II支持所有新老器件,包括SOPC Builder,支持系统级开发,25,Quartus II主界面,26,Quartus II主界面的一个实例,27, Quartus II设计流程 ,28,开始一个新项目(Project),Project: 项目,工程,设计 QuartusII 只对项目进行编译,模拟,编程 而不对单独的文件,除非把该文件设置为项目,29,指定新项目的工作目录及名称,选择命令File | New Project Wizard 在对话框中操作:,30,QuartusII设计输入,硬件描述语言输入 VHDL:.vhd Verilog:.v 模块/原理图方式输入(bsf/bdf) 使用MegaWizard Plug-In Manege产生IP核/宏功能块 基于块设计文件的输入(vqm/qsf) 内存编辑输入(mif/hex),31,图形设计方法,图形方式输入 调用QuartusII中提供的元件库 调用自己建造的元件,可由VHDL/Verilog生成,32,QuartusII中的元件库,基本元件库 (primitives) 基本门电路(primitiveslogic) 各种触发器、锁存器(primitivesstorage) 输入/输出引脚(primitivespin) 其它元件库(others) 74系列器件(othermaxplus2) 宏功能模块评估(otherOpencore_plus),33,QuartusII中的元件库,参数化元件库 (megafunctions) 算术组件:累加器、计数器、加法器、乘法器和LPM算术函数; 门电路:多路复用器、LPM门函数。 I/O组件:时钟数据恢复(CDR)、锁相环(PLL)、双数据速率(DDR)、千兆位收发器块(GXB)、LVDS接收器和发送器、PLL重新配置和远程更新宏功能模块。 存储组件:存储器、移位寄存器、LPM存储器函数。,34,调用库元件方法,新建原理图,打开原理图编辑器窗口 File | New,选择Device Design Files标签下Block Diagram/Schematic File,再单击OK 使用命令ViewShow Guidelines,可使原理图编辑器窗口出现网格,以帮助设计者确定元件符号的位置 调用库元件的三种方法 在原理图编辑器空白处双击鼠标左键 执行命令Edit | Insert Symbol 点击工具条上的与门符号(表示要插入一个元件符号),35,选择元件,元件选择对话框,36,由设计生成元件符号,创建VHDL文件或原理图文件 验证无误 执行Creat | Creat Symbol Files from Current File,生成元件符号,37,VHDL是什么?,HDL Hardware Description Language; VHSIC Very High Speed Integrated Circuit; VHDL VHSIC Hardware Description Language; VHDL是一种硬件描述语言 80年代初期美国政府超高速集成电路( VHSIC )发展计划的衍生物; VHDL的IEEE国际标准:IEEE Std 1076 IEEE std 1076-1987,-1993,-2000,-2002 四个版本,38,硬件描述与软件不同之处,信号 硬件连线的抽象 连接电路中元件 并行语句 多个语句同时执行 对应于电路中的不同部分,39,VHDL源程序基本结构,库、程序包调用 库:存放已有设计、程序包 程序包:存放共享数据类型、函数、过程等 与C对比:全局数据结构、库函数 实体说明(Entity) 描述外部接口 对外可见 结构体(Architecture) 描述系统内部结构 对外不可见,40,IEEE标准库及程序包,library ieee; package Std_Logic_1164 定义了标准逻辑位数据类型Std_Logic 定义了标准逻辑矢量数据类型Std_Logic_Vector package Std_Logic_Arith package Std_Logic_Signed package Std_Logic_Unsigned,41,程序包和设计库的引用,库和程序包的引用格式 library 库名表; use 库名.包名.项目名; 例子 library IEEE; use IEEE.Std_Logic_1164.All;,42,实体和结构体,实体说明:描述电路的接口信息,简称实体,保留字entity。 结构体:描述电路的行为或结构,保留字architecture。,43,半加器VHDL源程序,entity Half_Adder is port( X: in bit; Y: in bit; Sum: out bit; Carry: out bit ); end Half_adder; architecture beh of Half_Adder is begin Sum = X xor Y; Carry = X and Y; end beh;,外部接口特征,内部行为,44,实体声明的格式,ENTITY 实体名 IS GENERIC (常数名;数据类型:设定值) -类属参数说明,“ ”中内容为可选项 PORT (端口名1:端口模式 端口类型; -端口声明语句用分号隔开 端口名2:端口模式 端口类型; 端口名n:端口模式 端口类型 -最后一个端口声明语句后不加分号 ); END 实体名; -可以只用END结束实体声明,不一定加实体名,45,实体声明,实体名 实体名可以为英文字母打头的任何字母数字以及下划线的组合 建议实体名与文件名相同 类属参数 类属参数为实体声明中的可选项,常用来规定端口的大小、信号的定时特性等。 端口名 端口名是设计者赋予每个外部引脚的名称。 端口模式 端口模式用来定义外部引脚的信号方向 四种端口模式: in, out, inout, buffer 端口类型 定义端口的数据类型,常用的数据类型有Std_logic、Std_Logic_Vector,46,VHDL对象与数据类型,共同点 具有相同的类型特性 在初始化时均可赋初值 可相互赋值,47,信号特点与属性,定义位置 实体声明中端口均为信号 在结构体中,只能在进程外部定义 信号的常用事件属性:Event 表示信号发生变化 例 clkevent - 表示信号clk发生跳变 clkevent and clk = 1 - 表示信号clk发生正跳变(上升沿),48,对象的声明,格式 对象类 对象名: 数据类型 : 初值; 初值可不指定,用默认值 对象声明例子 signal CLK, CLEAR: Bit := 1; -声明了两个信号,均为二进制位类型,初值指定为1 variable Infetch: Boolean; - 定义布尔类型的变量Infetch,初值默认为False constant ROM_Size: Integer := 16#FFFF#; - 定义ROM_Size为整数类型的常数,其值为16进制的FFFF,49,VHDL数据类型,布尔(BOOLEAN)类型 位(BIT)数据类型 位矢量(BIT_VECTOR)类型 字符(CHARACTER)类型 整数(INTEGER)类型 实数(REAL)类型,50,常用数据类型std_logic,标准逻辑位数据类型:表示一位逻辑值 具有九种数据值,常用值仅四个 X、0、1和Z 简单设计中,使用0和1即可 使用需要 library ieee; use ieee.std_logic_1164.all;,Std_Logic中的信号值及其定义,52,常用数据类型 std_logic_vector,标准逻辑矢量数据类型 定义为一维数组,数组中每个元素都是std_logic 必须指明其数组宽度,即位宽 用途 用于计数器(相当于整型) signal a: std_logic_vector(1 to 4); - a具有4位宽度,作为计数器可以表示015 多个值的集合 result4: out std_logic_vector(3 downto 0); - 4位加法器的4个输出端 下标 signal a: std_logic_vector(1 to 4) := 1010; - a(1)=1, a(2)=0, a(3)=1, a(4)=0 signal a: std_logic_vector(3 downto 0) := 1010; - a(3)=1, a(2)=0, a(1)=1, a(0)=0,53,常用数据类型枚举,属于自定义类型 与C语言中enum数据结构类似 例子 type WeekDay is (SUN, MON, TUE, WEN, THU, FRI, SAT); - 表示一周的七天 type Stats is (S0, S1, S2, S3); - 定义状态机的四个状态,54,VHDL运算符,逻辑运算符(Logical Operator) 关系运算符(Relational Operator) 算术运算符(Arithmetic Operator) 符号运算符(Sign Operator) 重载运算符(Overloading Operator),VHDL运算符列表,VHDL运算符列表,57,并置运算符 &,并置运算符用于将多个元素或矢量连接成新的矢量,例如: Signal A:Std_Logic_Vector(3 downto 0); Signal B:Std_Logic_Vector(1 downto 0); Signal C:Std_Logic_Vector(5 downto 0); Signal D:Std_Logic_Vector(4 downto 0); Signal E:Std_Logic_Vector(2 downto 0); C=A -元素与元素并置 ,58,结构体的语法形式,architecture of is begin end architecture ;,ARCHITECTURE,并 行 信 号 赋 值 语 句,并 行 过 程 调 用 语 句,元 件 例 化 语 句,生 成 语 句,并 行 语 句,并 行 语 句,并 行 语 句,块语句,顺序语句1 顺序语句2 . . . 顺序语句n,进程语句,信号,信号,信号,信号,信号,END ARCHITECTURE,结构体中的并行语句,60,进程,最基本的行为结构 完成一定功能 相当于C里的一个函数 一个设计由若干个进程组成 进程内部实现功能 进程之间并列执行,61,进程一般形式,标号: process(敏感信号表) 声明部分 begin 顺序语句部分 end process 标号; 标号:该进程的一个名字标号 声明部分:定义局部变量 顺序语句部分:该进程执行的内容 敏感信号:用于激活进程的信号 敏感信号发生变化,会自动激活该进程 激活进程相当于函数调用,62,进程举例,Architecture Exam of Exam is -(局部变量声明部分) begin And_Process: - 进程1标号 Process (A, B) - 敏感信号 begin T = A and B; - 顺序行为语句 end process; clk_Process: - 进程2标号 process (clk) - 敏感信号 begin if clkevent and clk = 1 then Output = Input; - 将输入赋给输出 end if; end process; end Exam;,63,层次化设计的核心思想,模块化 将系统分为几个子模块 子模块又分别由更小的模块组成 元件复用 调用已有的设计 优点 减轻设计者工作量 增强设计的结构化,64,元件复用元件声明,作用 声明要引用的元件(一般在Architecture中) 定义了一个元件模板(C中的一个类) 格式 component 元件模型名 generic (参数名表: 类型; ); port (端口表: in/out 类型; ); end component;,65,元件复用元件例化语句,作用 调用元件模块,生成实例(C中定一个类的实例) 指定元件模板与实际信号的关联 格式 语句标号: 元件模板名 generic map (参数关联信息) - 可以省略 port map (端口关联信息); 注意事项 语句标号为实际元件名(类实例的变量名) 元件模板的名称和端口名最好与已有设计相一致,66,一位全加器设计实例,半加器h_adder电路图,全加器f_adder电路图,67,一位全加器或门描述,描述或门的逻辑关系,library ieee; use ieee.std_logic_1164.

温馨提示

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

最新文档

评论

0/150

提交评论