收藏 分享(赏)

Oct19_2009电气信息技术FPGA第四轮讲稿.ppt

上传人:jinchen 文档编号:6849791 上传时间:2019-04-24 格式:PPT 页数:43 大小:2.31MB
下载 相关 举报
Oct19_2009电气信息技术FPGA第四轮讲稿.ppt_第1页
第1页 / 共43页
Oct19_2009电气信息技术FPGA第四轮讲稿.ppt_第2页
第2页 / 共43页
Oct19_2009电气信息技术FPGA第四轮讲稿.ppt_第3页
第3页 / 共43页
Oct19_2009电气信息技术FPGA第四轮讲稿.ppt_第4页
第4页 / 共43页
Oct19_2009电气信息技术FPGA第四轮讲稿.ppt_第5页
第5页 / 共43页
点击查看更多>>
资源描述

1、2019/4/24,1,电气信息技术FPGA实验讲稿北京航空航天大学电工电子中心 2009年10月19日,2019/4/24,2,电气信息技术实践基础FPGA实验的目的,一、熟悉一款实验设备KH31001二、学习一种硬件描述语言VHDL三、掌握一款FPGACyclone 1C6Q四、熟悉一种集成开发环境QuartusII-5.0,2019/4/24,3,数字器件的种类,2019/4/24,4,2019/4/24,5,FPGA应用实例,2019/4/24,6,FPGA的概述,什么是FPGA?现场可编程门阵列(FPGA)是由可编程逻辑快组成的数字集成电路,这些逻辑块之间用可编程的互连资源。设计者可

2、以对器件进行编程来完成各种各样的任务。FPGA的应用领域:1 ASIC和定制硅2 数字信号处理 高速DSP传统上是用数字信号处理器来实现的,现在的FPGA可以包含内嵌的的乘法器、专用计算历程和大量的片上RAM,加上FPGA提供的并行性,其结果比最快的DSP还快500倍。3 嵌入式处理器 嵌入式处理器由CPU、定时器和I/O 组成。现在的FPGA足以实现一个集成有可选定制I/O功能的软核处理器,于是FPGA实现了嵌入式处理器的功能。4 物理层通信 FPGA长期以来用于实现物理层通信芯片和网络协议层互联的粘合逻辑。今天的高端FPGA拥有了多种高速收发器,这意味着通信和网络功能可以合并到同一设备中。

3、5 可重配置计算技术 这是指由FPGA 提供的固有的并行性和可重构性来实现软件算法的硬件加速。许多公司正在建立大型的以FPGA 为基础的可重配置计算引擎。,2019/4/24,7,简单的可编程功能,2019/4/24,8,几种半导体芯片发明的时间,2019/4/24,9,几个名词,PLD 可编程逻辑器件(1967) PAL 可编程阵列逻辑(上世纪70年代末期 与可编程) PLA 可编程逻辑阵列(1975年 与、或都可编程) GAL 通用阵列逻辑 CPLD 复杂可编程逻辑器件(上世纪70年代末期) FPGA 现场可编程门阵列(1984) ASIC 专用集成电路 (上世纪70年代末期) HDL 硬

4、件描述语言(1982年,1987年IEEE标准) EDA 电子设计自动化 ISP 系统在线编程(Lattice公司发明,在线 高压),2019/4/24,10,主要PLD厂商,ALTERA 是最大可编程逻辑器件供应商之一。开发软件为MaxplusII和QuartusII。 XILINX FPGA的发明者。开发软件为Foundition和ISE。全球PLD/FPGA产品60%以上是由Altera和Xilinx提供的。可以讲Altera和Xilinx共同决定了PLD技术的发展方向。 Lattice Lattice是ISP技术的发明者,ISP技术极大的促进了PLD产品的发展,与ALTERA和XILI

5、NX相比。中小规模PLD比较有特色。 ACTEL 反熔丝(一次性烧写)PLD的领导者,由于反熔丝PLD抗辐射,耐高低温,功耗低,速度快,所以在军品和宇航级上有较大优势。,2019/4/24,11,硬件描述语言,硬件描述语言(Hardware Description Language)。 硬件描述语言的作用:描述硬件的逻辑结构。硬件描述语言的种类:VHDL,Verilog等,2019/4/24,12,实验箱结构框图,2019/4/24,13,实验箱实物图,2019/4/24,14,LED 32,2019/4/24,15,7 段(独立/扫描)显示器 8,2019/4/24,16,VHDL 工程设计

6、流程图,2019/4/24,17,VHDL 程序设计基本结构和程序设计例子,a、b:输入端端口名 s:通道选择控制信号输入端端口名 y:输出端端口名 功能描述:若s=0则y=a;若s=1则y=b,IEEE库使用说明,实体:器件mux21的外 部信号接口说明,PORT 相当于器件的引脚,结构体:器件mux21的内 部工作逻辑描述,即为实 体描述的器件功能结构,2019/4/24,18,进程,进程语句结构进程标号: PROCESS (敏感信号参数表) 实体名 IS进程说明部分BEGIN顺序描述语句END PROCESS进程标号;进程的例子ARCHITECURE s_mode OF start IS

7、BEGINp1: PROCESSBEGINWAIT UNTIL clock ;-等待clock 激活进程IF(driver1)THENCASE output ISWHEN s1 output s2WHEN s2 output s3WHEN s3 output s4WHEN s4 output s1END CASEEND IF;END PROCESS p1;END ARCHITECURE s_mode;,2019/4/24,19,CASE语句结构,CASE 表达式 IS When 选择值 = 顺序语句;(“ = ”相当于then) When 选择值 = 顺序语句; END CASE; 使用CAS

8、E语句需注意: 1 条件语句中的选择值必须在表达式的取值范围之内。 2 CASE语句的每个选择值只能出现一次。 3 CASE语句执行中必须选中且只能选中所列条件语句中的一条。这表明CASE语句至少包含一个条件语句。 4 除非条件语句的选择值能够覆盖CASE语句中表达式的值,否则最末一个条件句中的选择必须用“OTHERS”,它表明所有条件句中未能列出其他可能的取值。,2019/4/24,20,2019/4/24,21,CASE 语句常见错误,SIGNAL value :INTEGER RANGE 0 TO 15 SIGNAL out1: STD_LOGIC; CASE value IS 缺少以w

9、hen引导的条件句 END CASE;CASE value ISWHEN 0= out1 out1 out1 out1=0; END CASE;,2019/4/24,22,2 元件例化语句,元件例化语句由两部分组成,前一部分对一个现成的设计实体定义为一个元件,第二部分则是此元件与当前的设计实体的连接说明,他们的语句格式如下:COMPONENT 元件名 ISPORT(端口名表);END COMPONENT 文件名;例化名: 元件名 PORT MAP (端口名连接端口名,。); 例如:程序1LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY nd2

10、 IS PORT(a,b:IN STD_LOGIC;c: OUT STD_LOGIC);END nd2;ARCHITECTURE nd2behv OF nd2 ISBEGIN C= a NAND b;END nd2behv;,2019/4/24,23,程序2,2019/4/24,24,综合后的结果,2019/4/24,25,选择信号赋值语句,选择信号赋值语句的语句格式如下:WITH 选择表达式 SELECT 赋值目标信号=表达式 WHEN 选择值表达式 WHEN 选择值。表达式 WHEN 选择值选择信号赋值语句本身不能在进程中应用,其功能却与进程中的CASE语句的功能相似。CASE语句的执行依

11、赖于进程中敏感信号的改变而启动进程,而且要求CASE语句中各子句的条件不能有重叠,必须包含所有的条件。选择信号语句中也有敏感量,即关键词WHEN旁的选择表达式,每当选择表达式的值发生变化时,就将启动此语句对各子句的选择值进行测试对比,当发现有满足条件的子句时,就将此子句表达式中的值赋给赋值目标信号。与CASE语句相类似,选择赋值语句对子句条件选择值的测试具有同期性,不像以上条件信号赋值语句那样是按照子句的书写顺序从上至下逐条测试的。因此,选择赋值语句不允许有条件重叠现象,也不允许存在条件涵盖不全的情况。 例如,2019/4/24,26,。 WITH selt SELECT Muxout = a

12、 WHEN 0 | 1 ,b WHEN 2 TO 5,c WHEN 6,d WHEN 7,Z WHEN OTHERS;。上例是一个列出选择条件为不同取值范围的4选1多路选择器,当不满足条件时,输出呈高阻态。,2019/4/24,27,VHDL中状态机的实现,数字电子学中许多过程遵循由一系列时钟脉冲所发起的预先确定的步序。这些过程可由一个单独的时钟输入驱动,在每一个时钟脉冲输入时有一个或多个输出以一种特殊的顺序进行响应。除了时钟触发器,这些过程常常还有其他外部激励对输出状态进行影响。这种可在逻辑系统中执行的事件序列称为状态机。状态机的输出跟随可以预测的时序,受时钟和其他输入激励信号触发。,201

13、9/4/24,28,跑马灯实验,2019/4/24,29,实验连线和实验操作,输入信号: 时钟clk 接10Hz 输入(SW7); 复位rst 接拨动开关I01(拨码开关SW3 左1); 输出信号: 8 位输出信号接LED 模块O25O32。下载程序,将SW7 拨至第二段(10Hz),拨码开关SW3 的IO1 拨至ON 的位置,此时,LED 灯的前8 位会有规律的闪烁。,2019/4/24,30,跑马灯设计,2019/4/24,31,if(rst=0)then - 系统初始化present0); elsif(clkevent and clk=1)thencase present iswhen

14、s0 = if(q1=“00000000“)then -S0模式:从左到右逐个点亮LEDq10);q1=“00000001“;present=s1;else q1=q1(0) ,2019/4/24,32,q1=q1(0) 例如q1的初值10000000,它将按以下规律变化1000000001000000001000000001000000001000000001000000001000000010,2019/4/24,33,S1模式,when s1 = if(count=“0111“)then -S1模式:从右到左逐个点亮LEDcount0);q1=“10000001“;present=s2;

15、else q1=q1(6 downto 0) ,2019/4/24,34,S2模式:从两边到中间逐个点亮LED,when s2 = if(count=“0011”)then-S2模式:从两边到中间 逐个点亮LEDcount0);q1=“00011000“;present=s3;else q1(7 downto 4)=q1(4) ,2019/4/24,35,向中间移动,初值10000001 q1(7 downto 4)=q1(4) 后四位左移 10000001 01000010 00100100 00011000,2019/4/24,36,S3模式:从中间到两边逐个点亮LED,when s3 =

16、 if(count=“0011“)then -S3模式:从中间到两边逐个点亮LEDcount0);q1=“10000000“;present=s0;else q1(7 downto 4)=q1(6 downto 4) ,2019/4/24,37,1 格雷码序列器的状态机,状态格雷码 S0 000 S1 001 S2 011 S3 010 S4 110 S5 111 S6 101 S7 100,2019/4/24,38,2019/4/24,39,VHDL 编程注意事项,1 在VHDL中,共有3种常用对象类型:常量、变量和信号。 2 应注意端口信号的方向。Out方向只能被赋值;in方向可以赋值:b

17、uffer可以赋值和被赋值;由于inout就是输入/输出端口,因此可以赋值和被赋值。特别需要注意的是,当输出信号要反馈回去时,必须定义为inout。 3 信号使用信号赋值符“=”。 4 变量使用变量赋值符“:=”。 5 std_logic和std_logic_vector是可综合VHDL描述中常见的数据类型 6 在ieee.std_logic_unsigned.all包的支持下,可进行std_logic和std_logic_vector的加减运算。 7 在同一个进程中,信号可以被多次赋值,但是只有最后一个赋值有效。在进程中,因为语句的执行是顺序的,虽然对一个信号有多次赋值,但是仍然认为该信号具

18、有具有一次驱动。在进程中,可以对一个信号进行多次赋值。但是,变量确不然,在一个进程内,对变量的多次赋值完全可以按照设计的逻辑进行。 8 在结构体中,不能对一个信号赋值多次,因为各个信号赋值语句之间是并发关系。 9 被赋值信号的位数与赋予它的数值位数必须相等,否则出错。例如,将2位八进制赋予4位逻辑矢量是错误的。解决这一问题的办法是:把位数凑齐。例如3 bit 的std_logic_vector和1位的std_logic可以通过以下的方法链接addtemp:=0&A1&A0+0&B1&B0+”00”&CYI;,2019/4/24,40,VHDL 编程注意事项(续),10 为使赋值和被赋值情况下不

19、出现错误,可以在结构体内声明与输入、输出端口相同数据类型的信号。在结构体中,先将输入端口赋予信号,然后在对信号进行逻辑处理后,再用赋值语句将信号赋予输出端口。 11 定义整形数范围的时候,计数器计数的范围实际上是2的n次幂减1。例如integer rang 0128,实际上会计数到255,因为128需要8位二进制表示。 12 Case语句需要时钟触发的。 13 信号量不可以在进程内定义。 14 VHDL文件不能放在根目录下,需要建一个文件夹。否则编译不能通过。 15 对含有元件例化的文件,器件必须在另一个文件里。顶层实体和工程名必须和总文件相同。 16 器件例化语句不能放在进程内 17 有“”

20、编译不能通过的原因是缺少库文件ieee_logic_unsigned.all。 18 时钟触发不同于 clkEVENT and clk=1。,2019/4/24,41,参考书目,1 北京航空航天大学电工电子中心 FPGA实验指导书 2 EDA先锋工作室 吴继华 王诚 编著 人民邮电出版社 2005年7月 3 EDA先锋工作室 吴继华 王诚 编著 人民邮电出版社 2005年7月 4 潘松 王国栋 编著 电子科技大学出版社 2003年6月 5 夏宇闻 北京航空航天大学出版社 2003年7月,2019/4/24,42,学习网站: 1)http:/ 2) 3) 4) www.cpld-,2019/4/24,43,谢谢!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报