收藏 分销(赏)

本科毕业设计---基于fpga的采样状态机的设计与仿真.doc

上传人:快乐****生活 文档编号:4816941 上传时间:2024-10-13 格式:DOC 页数:34 大小:859.50KB
下载 相关 举报
本科毕业设计---基于fpga的采样状态机的设计与仿真.doc_第1页
第1页 / 共34页
本科毕业设计---基于fpga的采样状态机的设计与仿真.doc_第2页
第2页 / 共34页
本科毕业设计---基于fpga的采样状态机的设计与仿真.doc_第3页
第3页 / 共34页
本科毕业设计---基于fpga的采样状态机的设计与仿真.doc_第4页
第4页 / 共34页
本科毕业设计---基于fpga的采样状态机的设计与仿真.doc_第5页
第5页 / 共34页
点击查看更多>>
资源描述

1、 南林大学生宿舍气流组织模拟 南京林业大学本科毕业设计(论文)题 目:基于FPGA的采样状态机的设计与仿真学 院:机械电子工程学院专 业: 测控技术与仪器学 号: 070307114学生姓名: 万海洋指导教师: 黄石红职 称: 副教授二O一一年 5月24日1目录 摘要采样是数字系统设计中的重要环节,而传统的A/D器件采样多是用CPU或单片机完成的。这些方法编程简单,但控制周期长,速度慢。而有限状态机(Finite State Machine,FSM)在数字系统设计中应用十分广泛,随着电子技术日新月异的发展。大规模系统与电路的出现,传统的手工设计状态机已经不可能,而基于FPGA的VHDL语言描述

2、状态机是大势所趋。基于FPGA语言描述的硬件设计,能够充分利用A/D采样的速度快的高性能,有效提高工作效率与精度。关键词:EDA VHDL FPGA 采样状态机 数码管显示Abstract Digital sampling is an important part of system design, and traditional A / D sampling device with a CPU or microcontroller mostly completed. These methods are simple to program, but the control cycle is l

3、ong and slow. The FSM (Finite State Machine, FSM) in the design of digital systems is widely used, with the rapid development of electronic technology. The emergence of large-scale systems and circuits, the traditional manual design state machines have been impossible, and FPGA-based VHDL language t

4、o describe the state machine is a general trend. FPGA-based hardware description language designed to take full advantage of A / D sampling speed, high-performance, higher efficiency and accuracy.Key words: EDA VHDL FPGA state machine digital display 第一章:绪论11.1研究目的及意义:11.2国内外同类研究概况:11.3研究内容:2第二章:EDA

5、技术及其开发工具简介32.1 EDA技术简介32.2 Quartus 简介32.3 设计的基本逻辑门例子42.4 本章小结6第三章:VHDL语言基础73.1 VHDL语言简介73.2 VHDL语言设计例子73.3 本章小结8第四章:FPGA基础94.1 CPLD分类94.2 FPGA简介94.3 本章小结11第四章:有限状态机的基本概念125.1有限状态机设计硬件的优势125.2 有限状态机的设计的一个代码例子125.3状态机的时序逻辑进程135.4本章小结14第五章:基于FPGA的采样状态机156.1 设计总体思路156.2 采样模块的设计156.2.1 AD0809的整体功能说明156.2

6、.2 0809的引脚功能说明166.2.3 AD0809的VHDL语言说明176.3 分频模块196.4 显示模块196.5 程序及仿真206.5.1 程序206.5.2 仿真及原理图276.6 本章小结28总结29致谢30参考文献31南京林业大学学士学位论文第一章:绪论1.1研究目的及意义:从小型电子系统到大规模电路系统设计中,状态机是最典型、应用最广泛的时序电路模块,如何设计一个稳定可靠的状态机是我们必须面对的问题. 传统的状态机设计方法复杂,首先要进行繁琐的状态化简,状态分配,状态编码,然后求输出与激励函数,最后画时序图或波形图。而利用VHDL硬件设计描述语言设计状态机,只需利用状态转移

7、图进行状态机的描述即可。且由于状态机能构成性能良好的同步时序逻辑模块,能够做到结构相对简单,设计方案相对固定。而基于FPGA的FSM设计使用同步时序方式设计,提高设计的稳定性,消除毛刺。通过VHDL语言的描述,不仅仅便于阅读,理解,维护,更重要的是利于综合器优化代码,利于用户添加合适的时序约束条件,利于布局布线器实现设计。1.2国内外同类研究概况: 在国外,目前利用EDA技术设计电路已成为主流,其中, Verilog公司开发的Verilog HDL作为当今国际主流的HDL语言,在芯片的前端设计中有着广泛的应用。而最具代表性的是美国国防部开发的VHDL语言。国内外利用VHDL语言设计状态机例子有

8、很多,因为大部分数字系统都可以分为控制单元和数据单元两个部分,控制单元的主体是一个状态机,它接收外部信号以及数据单元产生的状态信息,产生控制信号,因而状态机性能的好坏对系统性能有很大的影响。故国内外电路方向的同行都把状态机作为电路设计的核心,目前有很多出色的VHLD/FPGA程序的状态机描述。如现在十字路口的自动交通控制系统就是用基于FPGA的状态机来控制红黄绿三灯的有序亮灭,来保证车辆行人的安全出行。再如加州技术大学的电脑科学博士后Eric Klavic 研究的状态机在机器人中的应用,这种即时环境能够管理机器人在现实世界中获取感知和做出行动所要执行的多重任务,也能作为API共编程人员方便的进

9、行编码和整合新的行为及它其组件。东华理工学院机械与电子学院的翟燕磊等人研究的VHDL描述的状态机在内存控制器中应用就很好的说明了有些芯片完全能够用VHDL语言在FPGA或CPLD上实现。1.3研究内容: 熟悉数字电路与系统的EDA的设计流程,深入学习VHDL语句的硬件含义,理解状态机在电路中的关键作用。写出正确高效的VHDL语言,达到仿真运行的目的。 第二章:EDA技术及其开发工具简介2.1 EDA技术简介 随着电子电路的复杂化,设计人员将硬件的设计交给计算机去完成,于是电子设计自动化技术产生了。这就是EDA(Electronic Design Automatic)技术1。对于EDA技术,可以

10、理解于以大规模可编程器件为载体,以硬件描述语言(HDL,Hardware Description Language)为系统逻辑描述的主要方式,借助计算机和可编程逻辑器件的软,硬开发系统等工具,通过相关的软件开发,自动完成用软件方式设计的电子系统到硬件系统的逻辑编译,逻辑简化,逻辑分割,逻辑总合计优化,逻辑布局布线,逻辑仿真,直至对特定目标芯片的适配编译,逻辑映射,编程下载等工作,最终形成集成电子系统或专用集成芯片ASICA的一门技术2。目前,EDA已将逐渐成为电子电路系统的设计重要设计手段,目前广泛用于模拟与数字电路系统等许多领域。而从广义上来看,EDA研究的对象是电子设计的全过程,从某一角度

11、看,电子设计可分为三个层次:即系统级,电路级和物理实现级。2.2 Quartus 简介本毕业设计采用的EDA工具是Alter公司的Quartus ii9.0开发软件。Quartus ii是Altera公司在21世纪初推出的CPLD/FPGA集成开发环境,它是该公司前一代CPLD/FPGA集成开发环境MAX+PLUS II的更新换代产品3。图1 QUARTUS II 9.0的界面截图2.3 设计的基本逻辑门例子 如用Quartus II原理图输入设计方式设计一个组合逻辑电路过程。该程序实现的是与门,或门,非门,与非门,异或门,同或门。图2 程序截图如下图3 时序仿真图图4 生成的RTL电路图图四

12、中a,b代表输入端口,f5表示与非门,f4表示异或门,f3表示非门,f2表示或门。f1表示与门。2.4 本章小结 本章熟悉了EDA技术的基本概念与FPGA设计的软件QUARTUS的使用的简单介绍。并且通过举一个简单的例子了解怎样去设计FPGA电路。 第三章:VHDL语言基础 3.1 VHDL语言简介VHDL语言即very high Speed integrated cricuit hardware description language(超高速集成电路硬件描述语言),是电子设计的新技术,它符合美国电气和电子工程师协会标准(IEEE标准1076),利用一种和数字电路基本知识结合比较密切的语言来

13、描述数字电路和设计数字电路系统4。利用VHDL进行分块单元电路设计和整个系统设计,并结合一些先进的EDA工具软件(如Quartus II),通过计算机下载到硬件芯片上,实现电路功能,可以节省大量的设计周期。VHDL语言不一定按顺序一条一条执行每一条语句,而是并行执行的语句同时也有按顺序执行的语句,来描述在同一时刻中可能发生的事件,这要求数字电路设计人员摆脱一维的思维模式,以多维并发的思路来完成VHDL语言的程序设计。3.2 VHDL语言设计例子 以上章的基本门电路为例,用VHDL语言描述的程序代码如下: Library ieee; Use iee.std_logic_164.all - -库说

14、明Entity fadder is Port(a,b,ci:IN Std_ogic;- -实体说明 s,co:OUT Std_ogic);END Fadder;Architecture struc of fadder is Component or2gate - -结构体说明Port(a,b:In Std_ogic; f:OUT Std_ogic);End component;Componet hadder - -元件例化语句Port(a,b:In Std_ogic; s,co:Out Std_ogic);End component;Signal:tepms,tempcol2:Std_logi

15、c;Begin U0:hadder Port MAP(a,b,temps,tempco1);U1:hadder Port MAP(ci,tmps,s,tempco2);U2:or2gate Port map(ci,tempco2,co);End struc;从该程序可以看出,一个完整的VHDL从描述层次上可以包括库说明,实体说明,结构体说明三个部分5。例外,VHDL语言和其他软件一样,也有严格的标识符、数据对象,数据类型定义。准确、熟练掌握基本的数据定义,对于初学者是非常必要的。3.3 本章小结 本章介绍了VHDL语言的概念进行了综述,然后对其结构进行了详细的说明。通过这些内容,对FPGA设计

16、的硬件描述语言VHDL有了大致了解第四章:FPGA基础4.1 CPLD分类复杂的可编程逻辑器件CPLD(Complex Programmable Logic Device)是由PAL或GAL发展而来的,基本上是扩充原始的可编程逻辑器件,它通常是由可编程逻辑的功能块围绕一个位于中心和延时固定的可编程互联矩阵构成。为了增加电路密度而不使性能或功耗受到损失,复杂的可编程逻辑器件CPLD在结构上引入了各种特性。从目前的趋势来看,CPLD又延伸出二大分支:即可擦除可编程的逻辑器件EPLD(Erasable programmable logic device)和现场可编程门阵列器件FPGA(Field p

17、rogrammable gate qrrery)6.总的来说,CPLD与FPGA的定义有所不同,根据结构特点和工作原理,CPLD与FPGA的分类方法是:以乘积项结构方式构成逻辑行为的器件称为CPLD,以查表法结构方式构成逻辑行为的器件称为FPGA.4.2 FPGA简介FPGA是由掩膜可编程门阵列和可编程逻辑器件演变而来的,将它们的特性结合在一起,使得FPGA具有门阵列的高逻辑密度和通用性,又有可编程逻辑器件的用户可编程特性。而且,FPGA可以分成二大类:即细粒度(Fine-grain)和粗粒度(coarce-grain)。细粒度逻辑块是与半定制门阵列的基本单元相同,它由可以用可编程互连来连接的

18、少数晶体管组成,规模都较小,主要优点是可用的功能块可以完全被利用;缺点是采用它通常需要大量的连线和可编程开光,使相对速度变慢。而基于FPGA设计的硬件系统具有以下特点:(1)无需投片生产,即可得到芯片(2)可做ASIC的中试样片 (3)有丰富的触发器和IO引脚 (4)设计周期最短、开发费用最低、风险最小 (5)采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容 (1).设计规范(4).逻辑综合(2).设计输入(7)系统测试(3).仿真功能(5)布局布线(6)时序分析输入工具辅助分析工具管脚约束优化设计手动工具分析工具优化工具仿真工具图5 FPGA设计流程7FPGA的设计与传统的通用

19、IC设计在许多方面有区别,可以归纳表格如下:项目方法通用IC设计CPLD/FPGA设计设计方向从片子到系统从系统到片子成本限制元件数量工作量及芯片价格性能限制功能单元设计设计及开发工具性能设计方案选择主要元件FPGA芯片可测试要求 可连接到PCB板上只需要功能测试(注)验证制作印刷电路板模拟样机制作通常在实验室内完成可在实验室内完成后期更改计划不方便方便设计方法不灵活有很大的灵活性工具可以不依赖与CAE强烈依赖于CAE图6 FPGA设计与传统IC设计区别4.3 本章小结 本章介绍了CPLD与FPGA的分类方法,详细做表介绍了一般FPGA的设计流程,并且比较了FPGA与传统IC设计的区别。通过比

20、较很容易得出FPGA设计比其它设计更有优势的结论。从而在大型电路设计会考虑FPGA设计来提高效率。第四章:有限状态机的基本概念5.1有限状态机设计硬件的优势当前以硬件描述语言为工具,逻辑器件为载体的系统设计越来越广泛。在设计中,状态机是最典型、应用最广泛的电路模块,其运行速度的高效、执行时间的确定性和高可靠性方面都显示出强大的优势。有限状态机是一种时序逻辑电路,常用于数字电路中的控制单元。有限状态机中的每一个状态对应控制单元中的一个控制步骤,有限状态机的次态对应控制单元中与每一个控制步骤有关的转移条件。只要遵循这二条对应关系,就很容易利用有限状态机来描述数字电路系统中的控制单元了。有限状态机的

21、输出信号仅与当前状态有关时,称为Moore型有限状态机。其输出不仅与当前状态有关,而且与所有的输入信号有关时。这样的状态机称为Mealy型有限状态机8有限状态机可应用于各种系统控制,如:微处理机中的总线总裁、微处理机与外设之间的控制、工业控制、数据的加密与解密,数字信号与处理中的时序控制等。5.2 有限状态机的设计的一个代码例子组合逻辑进程中有关状态机的代码:PROCESS (input, current_state)BEGINCASE current_state ISWHEN state isIF(input=.) THENOutput =;Next_stateIF (input=.) TH

22、ENOutput =;Next_stateIF (input=.)THENOuput =;Next_state=state3;ELSE .END IF;.END CASE;END PROCESS;这段代码做了二件事:对输出端口赋值和确定状态机的下一状态。同样可以看出,它采用顺序代码设计组合逻辑电路的基本要求,即所有输入信号必须出现在PROCESS的敏感信号中,并且所有输入/输出信号的组合都必须完整列出。在整个代码中,由于没有任何信号的赋值是通过其他某个信号的跳变来触发的,所以不会生成寄存器。5.3状态机的时序逻辑进程时序逻辑进程主要用于实现状态机的状态转化。一般状态机是随外部时钟信号clock

23、.以同步时序方式工作的。该进程就是保证状态机的跳变与时钟信号同步,保证在时钟发生有效跳变时,状态机的状态发生变化。时序逻辑进程的代码如下:PROCESS(reset,clock)BEGINIF(reset=1)THENcurrent_state=state0;ELSE (CLOCKevent and clock=1)THENCurrent_state=next_state;END IF;END PROCESS;5.4 本章小结 本章纤细的介绍了状态机的基本内容,包括状态机包括moore型与mealy型的区别,并且举了一个状态机的例子。由于状态机的启动必须要有启动的时序逻辑进程,故本章还对逻辑启

24、动进程的程序作了些讲解。第五章:基于FPGA的采样状态机6.1 设计总体思路 温度传感器AD采样数据显示图7 设计思路框图本次课题研究的是由温度传感器得到数据后,怎样由AD采样,其中AD采样使用AD0809。 图8 ADC0809的元器件内部结构图6.2 采样模块的设计6.2.1 AD0809的整体功能说明本次设计采用ADC0809。ADC0809是28引脚双列直插式,它是8通道a/d转换器,ADC0809是带8位a/d转换器,8路多路开关以及微处理机兼容的控制逻辑的cmos组件。它是逐次逼近式A/D转换器,adc0809由一个8路模拟开关,一个地址锁存与译码组,一个ad转换器和一个三态三态锁

25、存器组成。多路开关可选通8个模拟通道,允许8路模拟分量分时输入,共用啊A/D转换器进行转换。三态输出锁存器用于锁存A/D转换完的数字量,当oe端为高电平时,才可以从三态输出锁存器取走转换完的数据。图9 ADC0809芯片引脚 6.2.2 0809的引脚功能说明ADC0809主要信号引脚功能说明如下9:ALE地址锁存信号。对应ALE上跳沿时。A,B,C地址状态送入地址锁存器.START转换启动信号,该信号上升沿时,复位ADC0809,该信号下降沿时,启动芯片,开始进行A/D转换。EOC转换结束信号。EOC=0.正在进行转换,EOC=1,转换结束。使用中该信号状态即可作为查询的状态标志,又可作为中

26、断信号使用。OE输出允许信号。用于控制三态输出锁存器向单片机输出转换得到的数据。OE=0,输出数据线呈高阻,0E=1,输出转换得到的数据。图10 ADC0809的元器件工作时序图6.2.3 AD0809的VHDL语言说明ADC0809采样控制器的程序采用VHDL语言来描述。由前面第二章有限状态机的设计知。该程序语言必定包含二部分:其中一部分REG是时序进程, 它在时钟信号CLK的驱动下, 将不断将next_state中的内容赋给current_state, 并由此信号将状态变量传输给组合进程COM。组合进程COM有两个功能:首先是状态译码功能, 即根据从current_state 信号中获得的

27、状态变量以及来自ADC0809的状态线信号EOC来决定下一状态的转移方向,即确定次态的状态变量; 其次采样控制功能, 即根据current_state中的状态变量确定对ADC0809的控制信号线ALE、START、OE等输出相应的控制信号, 在本次设计中,为便将由ADC0809的std_logic_vector(0,1,.7)中的数据输出口输出的8位转换数据锁存起来。在采样结束后增加一个通过通过LOCK向锁存器件进程LATCH1发出锁存信号的程序描述段10。图11 采样状态机图12 采样模块RTL viewer6.3 分频模块 分频模块在此此设计中用到二次,第一次是将系统的高频变为适当的低频控

28、制采样的状态机的转换,第二次是变为适当的低频控制数码管的扫描,使数码管上的数字能够清楚显示。图13 分频 RTL VIEWER6.4 显示模块 本次设计利用七段译码器驱动七段数码管将AD的七个端口的数据动态显示出来11。 图14 七段译码器RTL VIEWER6.5 程序及仿真6.5.1 程序利用ADC0809采集模拟信号的VHDL语言程序及其显示程序如下:定程序名为 bishe.vhd: Library ieee; - -库说明use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity bishe is - -实体说明

29、 port( d :in std_logic_vector(7 downto 0); clk,eoc ,rst :in std_logic; ale,start,oe:out std_logic; shuma,scan :out std_logic_vector(7 downto 0); lamp :out std_logic_vector(3 downto 0) ); end;architecture a of bishe is - -结构体说明 signal regl ,q :std_logic_vector(7 downto 0); signal xian_clkd:std_logic;

30、 signal ad_clk :std_logic; signal clock0 :std_logic; type states is(idle,s0,s1,s2,s3,s4); signal lock :std_logic; signal current_state,next_state:states; signal cnt3 :std_logic_vector(3 downto 0); begin lamp=1111; - -将发光二极管熄灭 cae:process(clk) - -总进程 variable cnt2: integer range 0 to 32; begin if clk

31、event and clk=1 then if cnt232 then cnt2:=cnt2+1; else cnt2:=0; ad_clk=not ad_clk; end if; end if; end process cae; - -采样的分频 cma: process(clk) variable cnt0: integer range 0 to 15000000; begin if clkevent and clk=1 then if cnt015000000 then cnt0:=cnt0+1; else cnt0:=0; xian_clkdif (rst=0) then next_s

32、tate=s0;else next_stateale=0;start=0;oe=0;lock=0;next_stateale=1;start=1;oe=0;lock=0;next_stateale=0;oe=0;lock=0;if (eoc=0)thennext_state=s2;elsenext_stateale=0;start=0;lock=1;oe=1;next_stateale=0;start=0;lock=1;oe=1;next_state=idle;end case;clock0=lock;end process pro; cam:process(clk) - -逻辑进程启动beg

33、inif (ad_clkevent and ad_clk=1) thencurrent_state=next_state;end if;end process cam;cbm:process(clock0)beginif (clock0event and clock0=1)thenregl=d; q=regl; - -在clock0上升沿锁入数据end if;end process cbm;cmc: process(xian_clkd) begin if xian_clkdevent and xian_clkd=1 then cnt3=cnt3+1; end if; end if; end p

34、rocess cmc; - -结束显示分频进程 cmd: process(cnt3) - -七段译码器管动态显示驱动 begin if rst=1 then scanscan shuma shumanull; end case; when 010=scan shuma shumanull; end case; when 001=scan shuma shumanull; end case; when 011=scan shuma shumanull; end case;when 100=scan shuma shumanull; end case;when 101=scan shuma shu

35、manull;end case;when 110=scan shuma shumanull;end case; when 111=scan shuma shumanull;end case;end case;end if;end process; - -将七个输出端口数据在七段数码管动态显示 end a; - -结束整个进程 6.5.2 仿真及原理图图15 程序的RTL viewer图16 仿真时序图6.6 本章小结 本章完成了AD 0809 采样的状态机的设计。首先介绍了0809的结构及引脚与工作方式,然后说明了怎样用VHDL语言描述状态机。并对本次设计所用的三个模块做了介绍:其中,采样模块

36、是其中的重点,故重点分析说明,而分频模块与显示模块只是做了简要介绍。最后贴出程序并对设计做了仿真分析。总结电子设计自动化(EDA)的出现给电子设计带来了巨大变革,特别是硬件描述语言的出现和发展,给电路设计带来了很多方便,随着VHDL描述语言的出现,使得电路系统速度更快,体积更小,重量更轻,功耗更少,稳定性更高。本次设计围绕采样状态机的VHDL语言描述,熟悉了EDA技术, FPGA概念及流程,学会了VHDL语言规则之后,最后通过设计一个了0809的采样状态机,并通过数码管显示八个端口的读数,从而详细的展示了FPGA设计的流程与特点。通过这次毕业设计我体会到了VHDL语言设计的优势,不过存在一些不足。我只完成了程序与软件仿真,由于时间来不及,没有设计硬件板子与烧结程序。我相信只要肯继续在FPGA这方面专研。定会达到这个目标的。致

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服