课程设计(论文)基于VHDL语言的简易逻辑分析仪设计_第1页
课程设计(论文)基于VHDL语言的简易逻辑分析仪设计_第2页
课程设计(论文)基于VHDL语言的简易逻辑分析仪设计_第3页
课程设计(论文)基于VHDL语言的简易逻辑分析仪设计_第4页
课程设计(论文)基于VHDL语言的简易逻辑分析仪设计_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、1 前 言高校电气类及相关专业教学中,实践环节越来越被重视。在数字电路的实验及数字系统的设计中,示波器已远远不能满足教学要求。例如在一些数字电路的研究和实验中,往往需要同时查看多路数字信号的时序关系,甚至有时因为信号不会重复出现,因此只用示波器往往无法完整了解信号的相对关系,在这种场合有台逻辑分析仪就显得相当必要。然而自1973年世界上第一台逻辑分析仪至今,逻辑分析仪的普及率仍然很低,30%以上的数字设计师没有使用逻辑分析仪,80%的高校实验室没有普及逻辑分析仪。最重要的原因在于其高昂的价格。逻辑分析仪昂贵的价格和越来越广泛的应用前景之间的矛盾使逻辑分析仪高精度智能化方向以展,同时也催生了很多

2、降低成本和拓展功能的方案。 逻辑分析仪的主要功能就是分析测量数字系统的逻辑波形和逻辑关系。它利用时钟脉冲采样,在达到预设的触发条件时,将触发前后的状态进贮存、显示和处理,展示数据流的内容,从而发现和解决故障。本课程设计设想采用专用集成电路(asic1,application specific integrated circuit)实现简易逻辑分析仪的功能。在本次计中,系统开发平台为max+plus2 。max+plus是altera公司提供的fpga/cpld开发集成环境,altera是世界上最大可编程逻辑器件的供应商之一。max+plus界面友好,使用便捷,被誉为业界最易用易学的eda软件。

3、在max+plus上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的设计环境,是设计者能方便地进行设计输入、快速处理和器件编程。在本次设计中,采用的硬件描述语言是vhdl3(very-high-speed integrated circuit hardware description language)。vhdl语言是一种用于电路设计的高级语言。vhdl主要用于描述数字系统的结构、行为、功能和接口。除了含有许多具有硬件特征的语句外,vhdl的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。2 设计方案总体设计方案图2.1 简易逻辑分析仪总系

4、统实现框图2.2 总系统控制工作流程图从整个系统的框图和功能要求可以看出,由vhdl语言组成的专用集成电路(asic1,application specific integrated circuit)主要完成输入信号判断、比较、存储、采集和处理。该系统组成主要主要对数据进行采集、存储、处理和输出、输入控制,其中start是对判断、比较电路使能,启动触发器全整运行,eoc是整个触电路最终产生的通知信号,反馈到控制器,把所需的信号输入到电路中,进行处理、存储和输出显示。3 系统实现与理论分析3.1 总体模块图3.1 模块总图总体模块如图3.1所示。d是信号输入端,data是触发信号输入端,data

5、out是信号输出端,可接显示器件显示8路采集信号。图3.1由三个模块组成,分别是触发电路模块、数据采集和处理模块、存储器模块。当信号满足触发条件时,8路信号输入数据采集和处理模块,最后将采集处理后的信号储存在存储器中。3.2 触发电路(1)触发电路软件流程图和组成框图图3.2 实现的软件设计流程图图3.3 触发电路的逻辑框图由于移位寄存器一次只能处理一路信号,四路信号需要4个移位寄存器,这就需要一个转换电路将四路由移位寄存器模块输出的信号进行处理,转换成可以和2个触发字同时进行比较。该模块的作用:检测输入序列是否与触发字相同。四级的并行触发是在设置了2个按预定次序排列的触发字后,只有当四路信号

6、同时满足所设的触发条件时,才产生触发信号。如图3.3可知首先由上位机向16b锁存器锁存由单片机预置触发字,分两次锁存2个8b触发字。然后检测待测四路信号,待测四路信号分别通过一个4b数据移位寄存器同时与2个触发字进行比较,当两者完全相同时产生一个触发信号四路信号必须分别为1111,1111,1111,1010时电路才产生触发信号,整个过由en作为最终的使能,由控制器控制,peq是启动控制器控制整个采集、处理等过程。(2)四位移位寄存器的模块及其仿真图图3.4 四位移位寄存器的模块图3.5 四位移位寄存器的仿真波形图仿真波形如图3.5所示。clr是清零信号,低电平有效。当clr是高电平时,每次时

7、钟信号clk的上升沿data_in3.0的值赋给a,输出信号data_out一个时钟周期变化一个,输出a二进制值的最低位。如3的二进制最低位是1,2的二进制最低位是0。(3)转换接口电路模块及其仿真图图3.6 转换接口电路模块图3.7 转换接口的仿真波形图仿真波形如图3.7所示。输入信号din_4.1是四位输入,cqout是16位输出。如输入4、b、4、b,倒序是2、d、2、d,将四次输入的数据连接起来就是2d2d。可知转换器完成了将4位输入转换成16位输出的功能。en是使能信号,en是低电平时,start始终是s0状态。当en变高电平时,同时在每个时钟clk上升沿state从s0、s1、s2

8、到s3状态变化,每次din_4.1都变化一次,从s0到s3,输入了四组数据。s0时,din_4.1倒序赋给thr_0; s1时,din_4.1倒序赋给thr_1; s2时,din_4.1倒序赋给thr_2; s3时,din_4.1倒序赋给thr_3。最后在state是s0时,将thr_0、thr_1、thr_2、thr_3连接起来赋给cqout。(4)锁存器的电路模块及其仿真图图3.8 锁存器的电路模块图3.9 锁存器的仿真波形图仿真波形如图3.9所示。clr是异步清零信号,高电平有效。当clr低电平时,每次时钟信号上升沿锁存输入数据到r16s中,再赋给输出信号q;当clr高电平时,清零输出信

9、号q。(5)比较器的电路模块及其仿真图图3.10 比较器的电路模块图3.11 比较器的仿真波形图仿真波形如图3.11所示。gbar是使能信号,低电平有效。当gbar低电平时,只有输入信号q、p相同时,peq输出低电平,否则输出高电平。即在触发模块中,只有输入信号和触发信号完全相同时才输出触发使能信号。3.3数据采集和处理(1)数据采集和处理的软件流程图和组成框图图3.12 数据采集控制系统的组成框图上图中工作速率由时钟信号clk的速率决定。图3.13 系统控制器工作流程图从系统示意图和功能要求可能性看出,该系统属于数据处理类型,其控制和数据处理器均可构造于一片单元型cpld或fpga系列芯片中

10、,输入信号和ram均在控制器下控制运行。因此有如图3.13所示控制器工作流程图。根据上述功能和控制器工作流程图,配置相应的控制器和数据处理器codp的硬件结构图如3.14所示。codp由存储器regn,数据处理电路calc和状态控制器control三个部分组成。图3.14给出了它们各自输入、输出和互联关系,以及整个codp与外部的联系。图3.14是codp的最高层次的逻辑框图。图中,存储器regn实现8路采集数据的绶冲,由控制器送出的en作为存储器使能信号。数据处理电路calc实现采样值和标准值(假设任意选择标准值为(18)10)的相减运算,并完成极性位的判断别(0为正极性,1为负极性)。状态

11、控制器control是系统正确有交工作的指挥枢纽,它发出对输入信号、dac、regn和calc的控制信号,并接收它们的反馈应答信号,做出判断和决策。图3.14 codp的逻辑框图(2)存储器regn的电路模块及其仿真图图3.15 存储器regn的电路模块图3.16 存储器regn的仿真波形图仿真波形如图3.16所示。en是使能信号,低电平有效。当en低电平时,无输出信号;当en高电平时,每次时钟信号上升沿输入信号data7.0的数据赋给输出信号q。(3)系统控制器control的电路模块及其仿真图图3.17 系统控制器control的电路模块图3.18 系统控制器control的仿真波形图仿真

12、波形如图3.18所示。输入信号eoc是控制信号,和触发模块的触发使能信号peq连接。输出信号start是触发模块的启动信号,oe是输入信号的控制信号,nwr是随机存储器ram的控制信号,en1是存储器regn的使能信号。状态信号state起初是s0,变为s1时,start变高电平,否则为低电平。时钟上升沿start变为s2时,判断eoc的值,如果eoc是高电平start则转为s3,否则维持s2状态。如果start是s3,则在每次时钟上升沿变化一次状态,直到s6时,又变回状态s0。状态s3时,oe为高电平,否则为低电平。状态s4时,en1为高电平,否则为高电平。状态s6时,nwr为低电平,否则为

13、高电平。控制器的功能即在不同时段产生不同的控制信号来控制其他模块,以实现整体功能。(4)数据处理器calc的电路模块及其仿真图图3.19 数据处理器calc的电路模块图3.20 数据处理器calc的仿真波形图仿真波形如图3.20所示。数据处理模块是将输入信号和一个设定的标准值18(十进制)相减,大于标准值时产生一个极性位1,小于标准值时产生极性位0。如输入信号为0(二进制补码位为256)时,输出信号为274(即为-18的二进制的补码);输入100时,输出82。(5)数据采集和处理codp的顶层模块及其仿真图图3.21 数据采集和处理codp的顶层模块图3.22 数据采集和处理codp的仿真波形

14、图仿真波形如图3.22所示。codp是顶层模块,输出信号oe高电平是控制模块countrol中s4状态,下一个即为状态s5,此时内部信号en为高电平,在时钟信号上升沿输出信号dout变化为270(-14的二进制补码),即4-18=-14。将输出信号dout展开,第一位是极性位,其他八位即8路信号的输出信号。3.4、存储器ram该模块的作用:当使能信号有及时,对脉冲信号进行采样存储,存入ram中,存储20bit每一路,然后结束存储,接着读出ram中存储的数据。根据题目中对存储深度的要求,每次触发存储4页的数据,触发位置前后各存储2页数据,这样可满足基本和扩展要求。flex 10k中的嵌入式阵列由

15、一系列具有实现逻辑功能和存贮功能的fab组成。eab是在输入、输出口上带有寄存器的ram块,利用它可以非常方便地实现一些规模不太大的rom、ram、双端口ram和fifo等功能。数据存储读写的模块和仿真波形图图3.23 数据存储读写的模块图3.24 数据存储读写的仿真波形图仿真波形如图3.24所示。输入信号oe是功能选择信号,高电平时是写数据,低电平时是读数据。输入信号cs是片选信号。ram1可看作是储存器,原先有数据在里面。前5单元里都是0,第6个单元开始是数据02、00、07、00、04、00等。所以当oe是低电平时,在每次时钟信号上升沿输出信号data_o是地址8、a和c中的数据07、0

16、4、00。4 结束语经过三周的努力,本次课程设计已经接近尾声。在这期间,我学到了很多不懂的知识,受益匪浅。虽然这次设计不是个人完全独立完成的,但是它让我认识到了实践给我们带来了无穷的理解,让我的想象和创造能力到了激发。在第一个星期里,我自学了vhdl硬件描述语言。在这期间还学习了关于eda技术的一些知识和max-plusii的使用方法,还有在网上搜索了一些关于自己设计课题的资料,了解了一下逻辑分析仪的基本原理,并对设计方案有了初步的想法。第二个星期里,我主要就自己的设计课题设计详细的实现方案,并用vhdl语言编程在max-plusii软件上编译仿真,观察分析仿真波形图是否符合要求。并不断改进设

17、计方案,使其达到理想的效果。经过大概两周的时间,基本完成了设计部分。在第三星期主要是就前几周的设计写课程设计报告。用visio软件将设计时的原理草图转换成标准的原理图,按照标准课程设计模版写自己的报告。在这三周时间里,得到了老师和同学的帮助,基本圆满完成了课程设计。通过本次课程设计,让我对eda技术有了一定的认识, vhdl语言设计的出现从根本上改变了以往数字电路的设计模式,使电路设计由硬件设计转变为软件设计,这样提高了设计的灵活性,降低了电路的复杂程度,同时也降低了设计的成本。5 参考文献1王道宪cpld/fpga可编程逻辑器件应用与开发北京:国防工业出版社.2004.12张秀娟,陈新华.e

18、da设计与仿真实践.北京:机械工业出版社.2002.8.3潘松,黄继业.eda技术与vhdl.第二版.北京:清华大学出版社.2007.4郑桐,李宏伟,丁茹.基于cpld的简易逻辑分析仪设计.天津工程师范学院报.2005.6.5曾繁秦,孙刚见,李冰,王强.eda工程实践.北京:清华大学出版社.2004.7.附录:vhdl源程序清单-转换接口模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity conversion is -定义实体部分port (clk ,en:in std_logic

19、; din_1: in std_logic; din_2: in std_logic;din_3:in std_logic;din_4:in std_logic;cqout: out std_logic_vector(15 downto 0);end conversion ;architecture behav of conversion istype s is (s0,s1,s2,s3);-定义四种状态signal state: s:=s0;signal read:std_logic;signal thr_0,thr_1,thr_2,thr_3:std_logic_vector(3 down

20、to 0);beginprocess(clk)-一个进程,时钟信号是其敏感信号beginif rising_edge(clk) then-如果时钟上升沿if en=1thencase state is when s0=thr_0=din_1&din_2&din_3&din_4;statethr_1=din_1&din_2&din_3&din_4;statethr_2=din_1&din_2&din_3&din_4;statethr_3=din_1&din_2&din_3&din_4;state=s0;readstate=s0;end case ;end if;end if;end proces

21、s;process(clk)-另一个进程begin if rising_edge(clk) then if read=1 thencqout=thr_0&thr_1&thr_2&thr_3; -&是连接符end if;end if;end process;end behav;-四位移位寄存器vhdl源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity shifter_4 isport(clk,ce,clr: in bit;-

22、定义输入为位变量 data_in:in std_logic_vector(3 downto 0); data_out:out std_logic);end shifter_4;architecture deng of shifter_4 issignal a: std_logic_vector(3 downto 0); beginprocess(clr,clk,ce,data_in)beginif clr=0 then a = 0000; -clr低电平,则异步清零aelsif clkevent and clk=1 then if ce=0 then a=data_in; else a(3 d

23、ownto 1)=a(2 downto 0);-向左移位 a(0)=a(3);-实现循环移位 end if; end if; data_out=a(0); end process; end deng ;-比较器的vhdl的源程序:library ieee;use ieee.std_logic_1164.all;entity hct688 is port(q, p : in std_logic_vector(15 downto 0); gbar : in std_logic; peq : out std_logic);end hct688;architecture ver1 of hct688

24、isbegin peq =0 when (q(15 downto 0)=p(15 downto 0)and(gbar=0) else 1;-只有当gbar为低电平,同时p和q相等时输出低电平,否则高电平end ver1;-锁存储器vhdl源程序:library ieee;use ieee.std_logic_1164.all;entity reg16b is port( clk:in std_logic; clr:in std_logic; d :in std_logic_vector(15 downto 0); q :out std_logic_vector(15 downto 0);end

25、 reg16b;architecture behav of reg16b is signal r16s : std_logic_vector(15 downto 0);begin process(clk,clr) begin if clr=1 then-clr是异步清零信号,高电平有效 r16s=0000000000000000; elsif clkevent and clk=1 then r16s(15 downto 0)=d; end if; end process; q=r16s; end behav;-数据采集和处理(codp)的顶层vhdl的源程序:-codp的顶层vhdl语言描述源

26、程序文件如下library ieee;use ieee.std_logic_1164.all;package codp_lib is -程序包说明,codp_lib是程序包名 component regn -regn单元说明 port( clk,en :in std_logic; data :in std_logic_vector(7 downto 0); q :out std_logic_vector(7 downto 0) ); end component; component calc -calc单元说明 port( data :in std_logic_vector(7 downto

27、0); q :out std_logic_vector(8 downto 0) ); end component; component control -control单元说明 port( clk,eoc :in std_logic; start,oe,nwr,en1 :out std_logic ); end component; end codp_lib; -程序包codp_lib说明结束 library ieee; use ieee.std_logic_1164.all; use work.codp_lib.all; -用户自定义的codp_lib库 entity codp is -实体

28、codp说明部分 port( clk,eoc :in std_logic; data :in std_logic_vector(7 downto 0); dout :out std_logic_vector(8 downto 0); start,nwr,oe :out std_logic ); end codp; architecture a of codp is -codp实体内结构a说明 signal en:std_logic; -内部信号en说明 signal regiout:std_logic_vector(7 downto 0); begin -内部信号regiout说明 reg8_

29、1:regnport map(clk,en,data,regiout); -端口映射,portmap是关键词, -各端口名称相同时为同一信号 contr:control port map(clk,eoc,start,oe,nwr,en); -端口映射 c1:calc port map(regiout,dout); -端口映射 end a;-在以上顶层的vhdl描述文件中,用元件例化语句定义了三个单元regn、calc和control,这三个单元的逻辑功能可用下述vhdl文件述-存储器regn的vhdl程序:library ieee;use ieee.std_logic_1164.all;ent

30、ity regn is -实体regn说明 port( clk,en :in std_logic; data :in std_logic_vector(7 downto 0); q :out std_logic_vector(7 downto 0) );end regn;architecture a of regn is begin process(clk) begin if (clk event and clk=1) then-如果clk有效 if en=1 then -如果使能端en有效 q statestateif eoc=1 then -如果eco=1,状态转向s3statestate

31、statestatestate=s0;end case; -状态分支结束end if;end process;start=1 when state=s1 else 0;oe=1 when state=s3 else 0; -输出信号赋值语句,例如-状态s1时,start=1,en1=1when state=s4 else 0; -否则start=0nwr=0when state=s6 else 1;end a;-数据处理器calc的vhdl程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; -

32、使用ieee标准中的unsigned库entity calc is -实体calc说明 port( data :in std_logic_vector(7 downto 0); q :out std_logic_vector(8 downto 0) );constant stand:std_logic_vector(8 downto 0):=111101110;end calc; -标准值(补码)赋值负数architecture a of calc is beginprocess (data)variable inter1,inter2,inter3:std_logic_vector(8 downto 0); -3个中间变量说明variable c:std_logic; -极性位变量说明 begin for i in 0 to 8 loop inter1(i):=0; -循环语句 inter2(i):=0; -3个中间变量各位均清0 inter3(i):=0; end loop; for i in 0 to 7 loop inter1(i):=data(i); -循环语句,data各位值赋给变量 end loop; -inter1的

温馨提示

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

评论

0/150

提交评论