课程设计(论文)-EDA技术在航空设备综合智能检测仪中的应用.doc_第1页
课程设计(论文)-EDA技术在航空设备综合智能检测仪中的应用.doc_第2页
课程设计(论文)-EDA技术在航空设备综合智能检测仪中的应用.doc_第3页
课程设计(论文)-EDA技术在航空设备综合智能检测仪中的应用.doc_第4页
课程设计(论文)-EDA技术在航空设备综合智能检测仪中的应用.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

eda技术在航空设备综合智能检测仪中的应用摘要:航空设备综合检测仪必须有一个和所有设备均能相互连接的复用接口,通常该借口的控制电路由传统的集成电路组成,因此带来的体积大、成本高,可靠性差的特性。所以我们要设计一个复用新型的接口来代替传统的借口,该借口具有体积小,成本小,较为可靠的复用借口。我们采用fpga在该复用借口的设计中,大大缩短了系统的设计周期,降低了开发成本,编程调试变的更为方便,可靠性得到很大程度上的提高。在实际编程是在quartus ii上编写及软件上的调试,然后通过数据线的连接在实验室上的系统箱进行硬件调试的。我们采用先进行vhdl的设计输入,然后进行波形仿真,最后在试验箱上调试得到和软件仿真一样的结果。较好的实现了复用接口的最初的设计要求。关键词:综合智能检测仪 复用借口 集成电路 vhdl quartus ii目录1 fpga及quartus ii的简介 1.1 什么是fpga(6) 1.2 fpga的结构(6) 1.3 fpga设计步骤(7) 1.4 硬件描述语言vhdl(8) 1.5 quartus ii简介 (9) 2 系统的设计要求及组成 2.1 系统的设计要求(10) 2.2 系统的组成(11)3 实验方案及选择 3.1 实验方案的选择(11) 3.2 实验功能框图(11) 4 功能的设计4.1 四位并转串(12)4.2 四位串转并 (13)4.3 八位并转串 (15)4.4八位串转并 (16)4.5 十六位并转串 (18)4.6 十六位串转并 (19)4.7 分频器的设计 (21)5软件仿真及分析5.1 顶层模块(22)5.2 仿真波形的分析 (23)6 硬件组装测试(23)7 实验总结(24)8 参考文献(24)9 致谢(25)eda技术在航空设备综合智能检测仪中的应用引言长期以来,外围设备与主机cpu速度之间的不匹配始终困扰着人们,影响了计算机系统更迅速的发展。随着计算机处理能力及存储规模的迅速增长,这个问题表现得更加突出。虽然已经采取了各种软、硬件的方法,不断地改善着cpu与i/o设备之间的接口性能。然而,在许多应用中接口问题依然是制约系统性能的瓶颈。对于特定的设计,设计者面对纷繁芜杂的接口标准,一般根据系统所需的成本及功能选择合适的标准产品,这可能导致接口标准冲突和引起互用性问题;或许新选择与接口兼容的标准器件,但又可能会造成不满足功能需要或成本要求等。随着电子技术的发展,特别是专用集成电路(asic)设计技术的日趋完善,数字化的电子自动化设计(eda)工具给电子设计带来了巨大变革,尤其是硬件描述语言的出现,解决了传统电路原理图设计系统工程的诸多不便。随着asic技术、eda技术的不断完善和发展以及vhdl、hdl等通用性好、移植性强的硬件描述语言的普及,fpga等可编程逻辑器件必将在现代数字应用系统中得到广泛的应用,发挥越来越重要的作用。fpga技术的迅速发展使得接口问题有了好的解决方案。例如,现有的高性能接口ip及高速物理i/o的fpga,可满足10gb/s以上的通信系统的要求;而且用fpga解决接口不兼容器件间的通信问题。因此本文将提出一种新的基于fpga的复用接口设计方法。1、fpga及quartus ii简介1.1 什么是fpga fpga(fieldprogrammable gate array),即现场可编程门阵列,它是在pal、gal、cpld等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(asic)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。目前以硬件描述语言(verilog 或 vhdl)所完成的电路设计,可以经过简 单的综合与布局,快速的烧录至 fpga 上进行测试,是现代 ic 设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如and、or、xor、not)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的fpga里面,这些可编辑的元件里也包含记忆元件例如触发器(flipflop)或者其他更加完整的记忆块。 系统设计师可以根据需要通过可编辑的连接把fpga内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品fpga的逻辑块和连接可以按照设计者而改变,所以fpga可以完成所需要的逻辑功能。 fpga一般来说比asic(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的fpga。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的fpga上完成的,然后将设计转移到一个类似于asic的芯片上。另外一种方法是用cpld(复杂可编程逻辑器件备)。1.2 fpga的结构目前主流的fpga仍是基于查找表技术的,已经远远超出了先前版本的基本性能,并且整合了常用功能(如ram、时钟管理和dsp)的硬核(asic型)模块。fpga芯片主 要由7部分完成,分别为:可编程输入输出单元(iob)、基本可编程逻辑单元(clb)、完整的时钟管理(dcm)、嵌入块式ram(bram)、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。图1-1 fpga芯片内部结构1.3 fpga设计步骤fpga 设计流程包括系统设计和设计实现, 系统方案完成之后即进入设计实现阶段的工作, 它以系统方案为输入, 进行rtl 级描述、功能仿真(rtl 级仿真)、逻辑综合、布线前门级仿真、适配(布局布线)、时序仿真(布线后门级仿真)、时序分析、器件编程、系统验证一系列流程的处理才能完成fpga芯片的设计, 其设计流程如下图 所示。需要说明的是, 如果仿真验证不对或者到走某一步有错, 就要返回修改。有必要检查和原理图或者hdl 设计代码的修改最多也最有效。修改后要重新走一遍流程。有时修改的地方有rtl 级描述、系统方案、约束和测试激励等。一般情况下, 对rtl 级的描述即要反复修改, 经过多次这样的迭代才能完成最后的设计。图1-2 fpga设计流程图1.4、硬件描述语言vhdlvhdl语言是一种用于电路设计的高级语言。它在80年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言 。vhdl的英文全写是:vhsic(very high speed integrated circuit)hardware description language.翻译成中文就是超高速集成电路硬件描述语言。因此它的应用主要是应用在数字电路的设计中。目前,它在中国的应用多数是用在fpga/cpld/epld的设计中。当然在一些实力较为雄厚的单位,它也被用来设计asic.vhdl主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,vhdl的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。vhdl的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是vhdl系统设计的基本点。vhdl具有以下特点:1、功能强大、设计灵活2、支持广泛,易于修改3、强大的系统硬件描述能力4、独立于器件设计,与工艺无关5、很强的移植能力6、易于共享和复用1.5、quartus ii简介quartus ii 是altera公司的综合性pld开发软件,支持原理图、vhdl、veriloghdl以及ahdl(altera hardware description language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整pld设计流程。quartus ii可以在xp、linux以及unix上使用,除了可以使用tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。图1-3 quartus ii 设计流程图1-4 quartus ii 图形用户界面的功能2、系统的设计要求及组成2.1系统的设计要求eda技术在航空设备综合智能检测仪中的应用,航空设备综合检测仪必须有一个和所有设备均能相互连接的复用接口,通常该借口的控制电路由传统的集成电路组成,因此带来的体积大、成本高,可靠性差的特性。所以我们要设计一个复用新型的接口来代替传统的借口,该借口具有体积小,成本小,较为可靠的复用借口。我们采用fpga在该复用借口的设计中,大大缩短了系统的设计周期,降低了开发成本,编程调试变的更为方便,可靠性得到很大程度上的提高。在实验中采用了硬件描述语言vhdl,他可以用来进行各种级别的逻辑设计,可以用来进行数字逻辑系统的仿真验证、时序分析和逻辑综合等,应用十分广泛。本文使用vdhl设计复用接口模块,实现接口复用的通用结构。2.2系统的组成被测设备:输入被检测的数据 fpga复用接口芯片控制开关:实现各接口的切换led灯发光:显示所按键液晶显示器:显示操作说明及测试结果微机系统:处理发送过来的数据打印机:打印测试结果图2-1 系统的结构框图3、实验方案及选择3.1实验方案的选择方案有两个:一个是传统的集成电路,一个是用vdhl描述的语言,设计一个基于fpga的复用借口传统的集成电路设计出的接口体积大,成本高,可靠性比较低。用fpga设计出的借口可以实现体积小,可靠性高,而且设计周期短,可以实现工业的自动化生产,大幅度减少成本。经过认真的比较分析,我们选择第二个方案。3.2实验功能框图我们的最终的实验功能框图如下串行输 出并行输 出4位并转串模块4位串转并8位并转串模块8位串转并16位串转并16位并转串图3-1实验功能框图4、功能的设计我们在这个实验中设计要是实现串行数据和并行数据的转换。我们的设计是在一块电路板上实现4位、8位、16位的串行数据和并行数据之间互相的转换。4.1 四位并转串首先要有一个时钟来控制电路,然后有一个数据输入口,还有一个分频器(这个是并行转串行所特有的,串行转并行则没有)。假如是串行输入、并行输出,则数据输入口输入一串串行数据,经过电路转换为并行输出。反之则亦然。例如4位并行输入,一位串行输出,其实验原理框图如下:四分频器数据并行输入端口串并转换器数据串行输出端口图4-1-1 四位并转串实验框图在quartus ii软件上把实验程序编写好之后进行调试,先编写各个小模块的程序,然后在连接起来,这样找错误比较方便。例如我们上面提到的是四位并行输入转为串行输出的程序代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity bc4_1 is /实体bc4_1port(clk:in std_logic; /时钟使能输入 load4_1:in std_logic; din4_1:in std_logic_vector(3 downto 0); dout4_1: out std_logic);end entity bc4_1;architecture behav of bc4_1 is signal cnt:std_logic_vector(1 downto 0);/定义信号cnt signal q:std_logic_vector(3 downto 0);/定义信号qbeginprocess(clk)begin if clkevent and clk =1 then cnt = cnt+1; end if;end process;process(clk) begin if clkevent and clk = 1 then if load4_1 =0 then q(3) 00 then q(3 downto 1)=q(2 downto 0); else if cnt = 00 then q=din4_1;end if;end if; end if; end if; end process;dout4_1= q(3);end behav;在软件上调试后得到的波形图如下:输入为1001图4-1-2 四位并转串波形4.2 四位串转并四位串并转换接口电路实现的功能为:将输入的四位串行数据做处理后并行输出。结构框图如下:4位串行数据输入串并转换器4位并行数据输出图4-2-1四位串转并实验框图部分程序代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cb1_4 isport (clk,load1_4:in std_logic; din1_4:in std_logic; dout1_4:out std_logic_vector(3 downto 0);end entity;architecture one of cb1_4 is signal q:std_logic_vector(4 downto 0);beginprocess(clk)beginif clkevent and clk=1 then if load1_4=0 then dout1_4=zzzz; else if q(4)=0 then q= 1110&din1_4; else q=q(3 downto 0)&din1_4; end if; end if; end if;end process;process(q)begin if q(4)=0 then dout1_4=q(3 downto 0); else dout1_4= zzzz; end if;end process; end;4位串转并功能模拟仿真:假设 输入为0101:图4-2-2四位串转并波形4.3 八位并转串原理和上面的四位并转串一样,只是将四分频器改为八分频器即可。实验框图如下:八分频器数据并行输入端口串并转换器数据串行输出端口图4-3-1 八位并转串实验框图部分程序代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity c3_3 is port(clk:in std_logic; en33:in std_logic; din3:in std_logic_vector(7 downto 0); dt3: out std_logic);end entity c3_3;architecture behave of c3_3 is signal cnt:std_logic_vector(2 downto 0); signal q:std_logic_vector(7 downto 0);beginprocess(clk)begin if clkevent and clk =1 then cnt = cnt+1; end if;end process;process(clk) begin if clkevent and clk = 1 then if en33 =0 then q(7) 000 then q(7 downto 1)=q(6 downto 0); else if cnt = 000 then q=din3; end if;end if;end if;end if;end process;dt3= q(7);end behave;8位并行输入,一位串行输出仿真波形图 输入为10111111图4-3-2 八位并转串波形4.4 八位串转并原理和四位串转并基本一样,只是将输入的数据改成了八位串行数据。结构框图如下:8位串行数据输入串并转换器8位并行数据输出图4-4-1八位串转并实验框图部分程序代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cb1_8 isport (clk,en22:in std_logic; din2:in std_logic; dt2:out std_logic_vector(7 downto 0);end entity;architecture one of cb1_8 is signal q:std_logic_vector(8 downto 0);beginprocess(clk)beginif clkevent and clk=1 then if en22=0 then dt2=zzzzzzzz; else if q(8)=0 then q= 11111110&din2; else q=q(7 downto 0)&din2; end if;end if;end if;end process;process(q)begin if q(8)=0 then dt2=q(7 downto 0); else dt2= zzzzzzzz; end if;end process;end;图4-4-2八位串转并波形4.5 十六位并转串原理和四位并转串一样,只是将四分频器改为十六分频器即可。实验框图如下:十六分频器数据并行输入端口串并转换器数据串行输出端口图4-5-1 十六位并转串实验框图部分程序代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity c7_7 is port(clk:in std_logic; en77:in std_logic; din7:in std_logic_vector(15 downto 0); dt7: out std_logic);end entity ;architecture behav of c7_7 is signal cnt:std_logic_vector(3 downto 0); signal q:std_logic_vector(15 downto 0);beginprocess(clk)begin if clkevent and clk =1 then cnt = cnt+1; end if;end process;process(clk) begin if clkevent and clk = 1 then if en77 =0 then q(15) 0000 then q(15 downto 1)=q(14 downto 0); else if cnt = 0000 then q=din7; end if;end if;end if;end if;end process;dt7= q(15);end behav;16位并行输入,1位串行输出仿真波形图 输入为1111000011110000图4-5-2 十六位并串转波形4.6 十六位串转并原理和四位串转并基本一样,只是将输入的数据改成了十六位串行数据。结构框图如下:16位串行数据输入串并转换器16位并行数据输出图4-6-1十六位串转并实验框图部分程序代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cb1_16 isport (clk,en66:in std_logic; din6:in std_logic; dt6:out std_logic_vector(15 downto 0);end entity;architecture one of cb1_16 is signal q:std_logic_vector(16 downto 0);beginprocess(clk)beginif clkevent and clk=1 then if en66=0 then dt6=zzzzzzzzzzzzzzzz; else if q(16)=0 then q= 1111111111111110&din6; else q=q(15 downto 0)&din6; end if;end if;end if;end process;process(q)begin if q(16)=0 then dt6=q(15 downto 0); else dt6= zzzzzzzzzzzzzzzz; end if;end process;end;图4-6-2十六位串转并波形4.7分频器的设计分频器的使用是在数据并行转串行的时候,使用分频器是为了让并行的数据更好的输入,以便计算机的识别,用vhdl语言编写的分频器程序如下 (以下的例子为四分频器):library ieee;use ieee.std_logic_1164.all;entity mux12_4 isport(ah,bh,din:in std_logic_vector(3 downto 0); a:in std_logic_vector(1 downto 0); y: out std_logic_vector(3 downto 0);end mux12_4;architecture rtl of mux12_4 issignal sel:std_logic_vector(1 downto 0);beginselyyyy=zzzz; end case;end process;end rtl;5、软件仿真及分析5.1顶层模块每个小模块编写及调试好之后就可以将他们耦合在一起进行调试,在顶层的原理图编辑框中调出各个子模块,然后将各个子模块进行连线,生成最终的顶层原理图,接下来对原理图的功能形式进行综合仿真。我们设计的顶层原理图如下:图5-1顶层模块原理图图5-2波形仿真52仿真波形的分析分析:由上面的仿真波形可以看出。我们设计的功能主要分为两个:一个是将并行数据输入,然后输出并行数据;另一个是将串行数据输入,然后串行输出。由图4-8-2可知:输入端有一个时钟信号clk,用来控制数据的输入。然后分别是数据的并行

温馨提示

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

评论

0/150

提交评论