




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、大连东软信息学院本科毕设计(论文)论文题目论文题目:基于FPGA的逻辑分析仪设计与实现系 所: 电子工程系 专 业:电子信息工程(集成电路设计与系统方向) 学生姓名: 学生学号: 指导教师: 导师职称: 副教授 完成日期: 2014年 4月 28日 大连东软信息学院Dalian Neusoft University of Informatio大连东软信息学院毕业设计(论文) 摘要 - 32 -第1章 绪 论1.1 课题研究背景与意义 当前,数字逻辑电路的出现,使得计算机和大规模集成电路的迅速发展。数字电路是处理由离散的二进制信息所表示的信息,用“1”表示高电平,“0”表示低电平。这些二进制数的
2、组合是多样化的,在此区域被称为数据域;用来测试数据域的技术叫数据域测试技术。一般情况数据信号忽视了实际的特定的波形,而只关心逻辑和时序关系。大量的数据流中,包含了大量的非隐蔽,随机误差的信号,要想找到它们无异于大海捞针。像逻辑分析仪一类的新的测试设备,能够及时,迅速,准确的解决问题。逻辑分析仪会用时钟信号从测试设备去采集和显示的数字信号。逻辑分析仪没有很多的电压等级,通常只显示两个电压(逻辑0和1)。设置参考电压后,逻辑分析仪将通过一个比较器确定,低于参考电压显示高电平(逻辑1),低于显示(逻辑0)。逻辑分析仪测量信号只是显示逻辑1或逻辑0。逻辑分析仪和示波器之间还有另一个区别是信道数。示波器
3、一般只有双通道或四通道,而逻辑分析仪的渠道可以有很多,甚至达到上百个。所以在测试多渠道时逻辑分析仪优势会很明显,特别适合总线调试信号。逻辑分析仪一般用于大规模数字系统组成的数字集成电路的检测,例如微处理器组成的数字系统,硬件和软件故障的检测。硬件逻辑分析仪的核心部件非常昂贵,投资高,技术更新周期长的缺点。更关键的是它与其他仪器设备的连接有限,无法自己编程硬件,二次开发差。基于软件的FPGA逻辑分析仪(软逻辑分析仪)有机地与计算机相结合,用软件开发系统,大大减少了产品开发周期,设计简单,成本也大大降低,但同时也更方便与网络外设连接、技术更新周期短、实用性更高。1.2 本课题的研究内容本文研究了逻
4、辑分析仪工作基本思路,仔细的分析了逻辑分析仪的整体架构和系统解决方案。主要对逻辑分析仪的主要组成部分数据采集、触发控制、数据存储和显示控制四大部分进行了研究。确定了系统的设计方案后,研究了FPGA并利用Verilog HDL硬件描述语言进行硬件电路的设计。本设计采用自下而上的设计方法对系统进行功能划分和定义,随后采用Verilog HDL硬件描述语言对每个模块进行描述。在做完电路设计后,在FPGA的开发环境Quartus II中对逻辑分析仪的进行仿真。最终会对论文的主要工作进行总结,总结该逻辑分析仪的特点和不足,并指出需要进一步完善和发展的方面,和未来逻辑分析仪的发展趋势。第2章关键技术介绍2
5、.1 FPGA介绍集成电路(ASIC)领域中的一种半定制电路而出现的,它是的前身是PAL(可编程阵列逻辑)、GAL(通用阵列逻辑)等可编程器件。FPGA既终结了定制电路的缺陷,又改善了原有可编程器件门电路数不足的缺点。FPGA是一种PLD(可编程逻辑器件)芯片,它是的主要结构是以一种RAM,即查找表(LookUpTable,LUT)作为基础的。目前FPGA中多使用4输入的LUT,因此每一个LUT都可以认为是一个有4位地址线的16X1的RAM。当用户通过原理图或HDL描述了一个逻辑电路以后,FPGA开发软件会自动计算逻辑电路的所有可能结果,并把结果事先写入RAM。就如同输入一个地址查表一样,当有
6、一个信号进行逻辑计算时,就能找出与地址内容相对应的部分,只需要输出它就可以了。FPGA设计流程分为设计规范、设计输入、功能仿真、综合设计、布局布线:时序仿真、下载验证等步骤,简明设计流程如图2.1所示。图2.1 FPGA设计流程图2.2 硬件描述语言硬件描述语言HDL用形式化的方法描述数字电路和系统。这种语言设计的数字电路系统,不但可以从上层到下层(从抽象到具体)逐层描述自己的设计思想,而且可以用一些分层次的模块去表示一个极其复杂的数字系统。使用电子设计自动化(EDA)工具,对用硬件描述语言设计的数字逻辑模型进行仿真,然后在用自动综合工具将设计的内容转换成门级电路网表。这其中具有代表性的语言就
7、包括Verilog HDL语言Verilog HDL语言的诞生要追溯到上世纪80年代初,当时的GateWay Design Automation公司需要为其模拟器产品开发一种新的硬件建模语言,该公司的工程师菲尔莫比(Phil Moorby)完成了Verilog的主要设计工作。Verilog HDL作为一种便于使用的语言渐渐的为众多设计者所青睐,也因此他们的模拟仿真器产品也得到了大面积的应用,Verilog HDL语言在公众领域开始普及是在1993年,当时的一个组织,OVI(Open Verilog Intemational)决定推广Verilog HDL语言,使得这门新起之秀得到了快速的发展。
8、VerflogHDL的优越性得到了广泛的认同,因此IEEE于1995年制定了Verilog HDL的IEEE标准。Verilog HDL的优点主要有以下几个方面,首先它在1983年就诞生了,设计资源及其的丰富,也因此拥有广泛的设计群体。其次这种硬件描述语言非常的简单易懂,只要有一些C语言基本知识,经过一段时间的学习与实际操作,就可以在极短的时间内掌握这种设计技术。考虑到这种语言的灵活性和实用性,本文的设计将采用Verilog HDL作为硬件开发语言。2.3 集成开发环境Quartus II介绍Quartus II是Altera公司在本世纪初推出的FPGACPLD集成开发环境,它持原理图、内嵌自
9、有的综合器以及 HYPERLINK /view/557623.htm t _blank 仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II设计工具完全支持VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,为模块化的设计提供了方便。Quartus II能够提供完美的层次化设计,在一个输入编辑环境中可以相互使用不同的设计输入形式,可以有效的运用原理图与HDL进行混合设计;Quartus II能够使用RTL Viewer观察器观察综合后的RTL图,RTL图提供了综合后逻辑模块及它们之间
10、的相互连接方式;完成编译成功,可以进行仿真来验证设计的功能正确与否可;最后,综合和仿真没有问题后,便可以将编程文件(如sof文件、.pof文件)通过编程器下载到目标器件中验证功能的实现。Quartus II的Nios II软核处理器开发包SOPC Builder,主要用于实现Nios II系统的配置和生成,以及与Nios II系统相关的监控和软件调试平台的生成。除此以外,用户也能够使用Quartus II结合基于MATLAB的DSP Builder进行FPGA的DSP系统开发。Quartus II是一种综合性的开发平台,它集 HYPERLINK /view/2517315.htm t _bla
11、nk 嵌入式软件开发、Altera的片上可编程系统(SOPC)开发、集系统级设计于一体。由于Altera Quartus II这种可编程逻辑的设计环境的强大的设计能力和直观易用的接口,很受 HYPERLINK /view/3114367.htm t _blank 数字系统设计者的青睐。本论文采用Verilog HDL实现硬件设计。仿真、综合、采用Quartus II和modelsim软件工具实现。作为一种可编程逻辑的设计环境第3章系统功能需求3.1 逻辑分析仪的基本结构与特点3.1.1 逻辑分析仪的基本结构逻辑分析仪通道输入,主要按照数据的捕获方式,去寻找已经规定好的数据。用数据采集模块将其转
12、换成相应的数据流形式。数据采立即集模块的主要作用是用来捕获需要观察的数据的;当时钟模块工作时,一旦搜索数据,会有一个控制数据存储器的触发信号被数据触发;存储在存储器里的数据将会在显示控制模块里显示出来。3.1.2 逻辑分析仪的特点 逻辑分析仪要有如下主要特点: 要求测试速度大于被测数字系统的工作速率。 为了便于观察,以VGA接口的显示屏显示数字系统的运行情况。 输出通道足够多,可同时检查16路,32路甚至更多路的信号。 要有记忆功能,它的高速存储器是能够将数据快速的进行采集和存储的。数据采集速度是由储存器的速度决定的;而存储器的容量又影响着采集数据的多少。 具有超前的观察能力。因为逻辑分析仪内
13、部有存储器,可以存储处出发前的数据,可以显示付延迟的数据,有助于分析故障原因。3.2 逻辑分析仪的功能需求本次设计工程的功能需求,需要实现的逻辑分析仪的功能,罗列了下述9个功能点。本次设计在理想情况下最大频率可以达到275MHz,但实际情况却不能达到如此高的频率只能到150MHz。所以这次设计的信号捕获精度定位在100MHz。采集模式共有三种:MODE1触发后显示后64个采集数据;MODE2触发后显示前32个采集后32个采集数据;MODE3触发后显示前64个采集数据。共有4路信号捕获输入通道,1路信号触发通道(可配置的上升沿或者下降沿触发)。使用60Hz/640*480分辨率下的电脑显示器(V
14、GA),用作显示波形的屏幕,以每8个像素点为单位作为一个采集数据的显示长度。一位拨码开关,控制上升沿触发或者下降沿触发的。配置触发模式的三位拨码开关,例如:开关1拉高则开启MODE1,开关2拉高则开启MODE2,开关3拉高则开启MODE3。同一时刻三个开关只能有一个置高,多开没有效果。有一个FPGA的系统复位按键和一个逻辑分析仪的采集清除按键,低有效。用于清除当前采集波形,以开始一个新的采集触发。两个调节按键,控制采集频率(采集周期)的设置。可调的采集频率(采集周期)。3.3 逻辑分析仪的工作原理逻辑分析仪的一般工作过程就是数据采集、存储、触发、显示。由于它采用了数字存储技术可将数据采集工作和
15、显示工作分开进行。同时,也可以对存储的数据反复进行显示,对于分析和研究会有很大的帮助。使用逻辑分析仪的探头(逻辑分析仪的探头是将若干个探极集中起来,其触针细小,以便于探测高密度集成电路)监测接进被测系统的数据流,之后会形成并行数据。再将其送到比较器里处理,在比较器中,输入信号与外部设定的门限电平进行比较,当输入信号的值比门限电平值大时,就在相应的线上输出高电平,反之输出低电平,并对输进波形进行整形。之后,再在时钟脉冲控制下将经比较整形后的信号送至采样器进行采样,被采样的信号按顺序存储在存储器中。采样信号在存储器中存储的组织依据 “先进先出”的原则,当有显示命令输入时,信息会依据先后顺序逐一读出
16、,并按照之前设定的显示方式来显示信息。逻辑分析仪的基本功能有两个,一是分析系统和诊断系统故障;二是用便于观察的形式,显示出数字系统的运行情况,起到一个逻辑显示器的作用。为了简化设计,本设计原理图如图3.1所示,数据获取部分是用于捕获并存储所要观察分析的数据,而数据显示则是用多种形式来显示所获取的数据。其中触发产生是逻辑分析仪中最为关键的部分,它的作用,简单的说就是在被分析的数据流中搜索特定的数字,一旦发现这个数字,便产生触发信号来控制和存储有效的数据,它的功能决定了欲观察的数据窗口在整个数据流中的位置;那么数据流从何而来呢,这就是数据输入部分的功能,数据输入部分就是将各通道的输入信号变换成相应
17、的数据流;最后,数据显示部分的功能则是将存储器中的有效数据,最终以多种不同的显示方式显示出来。需要说明的是,整个系统都是在同步(外部时钟)或异步(内部时钟)的作用下实现运行的。图 3.1逻辑分析仪的原理结构第4章系统RTL级设计4.1 PLL4.1.1 PLL配置该PLL的输入时钟为FPGA外部的25MHz晶振,希望得到一个100MHz(输入时钟的4倍频)的系统时钟供FPGA内部使用。该PLL的输入输出接口如表4.1所示。表4.1 PLL接口定义信号名方向功能描述inclk0 inputPLL 输入时钟aresetinput PLL 复位信号,高电平有效c0output PLL 输出时钟c1o
18、utputPLL 输出时钟Lockedoutput该信号用于指示 PLL 处理后的时钟已经稳定输出,高有效。4.1.2 PLL复位电路FPGA设计中复位方式有异步复位和同步复位是两种很常用的复位方式。异步复位是指,无论时钟沿是否到来,当复位信号有效时,就对系统进行复位。而同步复位则是,只要复位信号和时钟信号同步,一旦时钟上升沿到来并且检测到复位信号就进行复位的操作。根据表4.2所列出的同步复位信号与异步复位信号的优缺点,可以从中看出,要想解决同步复位的资源消耗问题以及异步复位的亚稳态问题,只要设计一个异步复位,同步释放的电路就能够解决。表 4.2同步复位与异步复位优、缺点的比较同步复位异步复位
19、 优点仿真器的仿真异步复位可以节省资源,有利于时序分析设计相对简单可以滤除高于时钟频率的毛刺。异步复位可以节省资源优设计相对简单点异步复位信号识别便。缺点复位信号的有效时长必须大于时钟周期,同时组合逻辑的路径延时,复位延时等会耗费较多的逻辑资源。在复位信号释放的时候容易出现问题。复位信号容易受到毛刺的影响。如图4.1所示,为一个异步复位,同步释放的双缓冲PLL后复位电路。该电路采用 FPGA的外部时钟clk作为输入时钟,该电路先把输入复位信号rst_n做异步复位、同步释放处理,随后同时将时钟clk以及复位信号输入到PLL。为了达到PLL输出时钟有效前的目的,要把系统其他部分维持在复位的状态。也
20、就是说,在PLL有效输出之前,其输出locked信号要一直保持在低电平,而要把它置于高电平,需要在PLL的输出稳定以后才能做到。然后,需要把locked和FPGA外部输入复位信号rst_n进行相与的操作后,再作为整个系统的复位信号。而这个复位信号也是让合适的PLL输出时钟异步复位、同步释放处理的。该电路在PLL输出前和PLL输出后对复位信号进行了两次处理,因此它的复位信号特别稳定。图4.1 PLL后复位电路设计4.1.3 复位信号产生当PLL得到一个时钟输入(一般是外部晶振时钟)时,经过其内部处理后输出端能得到一些时钟频率。PLL输出的时钟频率和相位上很稳定,而且时钟网络延时比外电路的分频时钟
21、小很多,因此其应用非常广泛。如图4.2所示,在逻辑分析仪的复位设计里,先用FPGA的外部输入时钟clk将输入复位信号rst_n异步复位、同步释放处理,然后将复位信号输PLL,同时clk也输入PLL。在PLL输出时钟有效前,系统的其它部分都保持复位状态。PLL的输出locked信号在PLL有效输出之前一直是低电平,等PLL输出稳定有效之后拉高该信号。FPGA外部输入复位信号rst_n和locked信号相与之后在作为整个系统的复位信号。图4.2复位设计原理图4.2 数据采集模块sampling_ctrl模块的功能主要是包含按键检测、触发控制和模式选择、数据采集、数据存储等,数据采集的主要功能都是由
22、它实现的,因此它是采集控制部分的核心模块。4.2.1 按键检测人们日常生活中所用的键盘,分为编码键盘和非编码键盘。用专用的硬件编码器才能识别键盘的闭合,同时输出键编码号或键值的称为编码键盘,如计算机键盘。非编码键盘则是利用软件编程来识别。嵌入式系统的键盘应用中,一般会使用非编码键盘,也有用到编码键盘的。 如图4.3所示,按键在闭合和断开的那一刻,触点会存在抖动现象。在按键按下或释放时,可能都会出现一个不稳定的抖动时间,而这个抖动时间会使得按键编码无法处理好,所以有必要有效消除按键抖动。图 4.3按键波形按键检测的代码如下:reg20:0 delay;/延时计数器reg1:0 key_value
23、r1,key_valuer2;wire1:0 key_change;/ always (posedge clk_100m or negedge rst_n)if(!rst_n) delay = 21d0;else delay = delay+1b1;/ always (posedge clk_100m or negedge rst_n)if(!rst_n) beginkey_valuer1 = 2b11;key_valuer2 = 2b11;endelse if(delay = 21h1fffff) beginkey_valuer1 = add_key,dec_key;/delay 20ms,
24、锁定键值key_valuer2 = key_valuer1;endassign key_change = (delay = 21d1) ? (key_valuer1 & (key_valuer2) : 2b00;程序设计的基本思路是:第一个always模块启动计数器,延时20ms左右的时间。(2) 第二个always语句,每过一个20ms,进行一次键值采集。(3) 如果前后20ms的键值是否发生了改变,则锁定键值,同时输出控制信号key_change。4.2.2 触发控制组合触发(也叫基本触发)是将逻辑分析仪各通道的信号与各通道预置的触发字进行比较,当这些触发字一一匹配时,就能够产生触发信号。
25、这种功能可以在复杂的数据流中观察和分析某些特定的数据块。如选择“AMP”指令在数据线上出现的时刻作为触发条件,就可以使逻辑分析仪跟踪AMP指令,监视程序的转移。这对组合触发是非常有利的。逻辑分析仪都必须要具备组合触发的功能。它主要由主要由两种方式构成,即触发开始跟踪和触发终止跟踪(也被称为开始显示触发和终止显示触发或后置触发和预触发)。开始触发的原理是直到写满数据为止,存储采集的数据的先决条件(从数据流中识别触发字)只要满足,存储器就一直存储数据。而终止触发的先决条件是存储器存满新数据后才开始触发,也就是说当存储器存满新数据时,就开始在数据流中搜索触发字,只要能搜素到数据就停止存储的动作。此时
26、存储器中所写入的信息就是以触发字为终点的一组数据。对于故障诊断来说,这样的功能是很有实际意义的。一旦系统出错的数据被设置为触发字,逻辑分析仪就会去搜索这些出错的数据,甚至一些意想不到的情况也能找得到,这对于分析故障的原因很有帮助。组合触发的代码如下:input trigger;reg trigger_r1,trigger_r2,trigger_r3;wire pos_tri;wire neg_tri;always (posedge clk_100m or negedge rst_n) if(!rst_n) begintrigger_r1 = 1b0;trigger_r2 = 1b0;trigg
27、er_r3 = 1b0;endelse begintrigger_r1 = trigger;trigger_r2 = trigger_r1;trigger_r3 = trigger_r2;endassign pos_tri = trigger_r2 & trigger_r3;assign neg_tri = trigger_r2 & trigger_r3reg trigger_valid;/设定的触发条件满足后,该标志位拉高always (posedge clk_100m or negedge rst_n)if(!rst_n) trigger_valid = 1b0;else if(!samp
28、ling_clr_n) trigger_valid = 1b0;else if(tri_mode & pos_tri) trigger_valid = 1b1; else if(!tri_mode & neg_tri) trigger_valid = 1b1;4.2.3 数据采集在数据采集模块的采样时钟的作用下对被测数据进行采样,采样的数据经过触发模块与触发条件进行比较,若满足触发条件,将采集到的数据按照触发前和触发后两种方式放置在数据移位寄存器中,然后经VGA接口传送到显示屏上上进行显示,以供使用者对采集到的数据进行分析。数据采集的时钟即基本的时钟为PLL_c0 = 100MHz,其可调的采
29、集频率如表4.3下:共10级。表4.3 可调的采集频率频率:100M50M25M10M2M1M500K200K100K10K周期:10ns20ns40ns100ns500ns1us2us5us10us100us计数:01394999199499999999计数为PLL_c0计数值,使用时钟使能方式控制采集时刻。sapdiv_cnt为采集率分频计数器计数信号。sampling_rate为采集率设置寄存器。sapdiv_max为采集率对应的分频计数值。数据采集的部分代码如下:reg13:0 sapdiv_cnt;/采样率分频计数器 0-9999reg3:0 sampling_rate;/采样率设置
30、寄存器,0-100M,1-50M,9-10Kreg13:0 sapdiv_max;/采样率对应的分频计数值wire sapdiv_end;/采样点到置高一个时钟周期/采样频率控制按键处理always (posedge clk_100m or negedge rst_n)if(!rst_n) sampling_rate = 4d0;else if(key_change1 & (sampling_rate 4d9) sampling_rate 4d0) sampling_rate = sampling_rate-1b1;/采样周期模式最小到0/计算采样率对应的分频计数值always (sampli
31、ng_rate)case(sampling_rate)4d0: sapdiv_max = 14d0;4d1: sapdiv_max = 14d1;4d2: sapdiv_max = 14d3;4d3: sapdiv_max = 14d9; 4d4: sapdiv_max = 14d49; 4d5: sapdiv_max = 14d99; 4d6: sapdiv_max = 14d199; 4d7: sapdiv_max = 14d499; 4d8: sapdiv_max = 14d999; 4d9: sapdiv_max = 14d9999; default: sapdiv_max = 14d
32、0;endcase/采样频率分频计数always (posedge clk_100m or negedge rst_n)if(!rst_n) sapdiv_cnt = 14d0;else if(sapdiv_cnt = sapdiv_max) sapdiv_cnt = 14d0;/采样率计数最大值到else sapdiv_cnt = sapdiv_cnt+1b1; assign sapdiv_end = (sapdiv_cnt = 14d0);/采样点到/产生64*16个移位寄存器reg63:0 sft_r0;/移位寄存器组0reg63:0 sft_r1;/移位寄存器组1/采集信号signal
33、0always (posedge clk_100m or negedge rst_n)if(!rst_n) sft_r0 = 64d0;else if(sampling_start) sft_r0 = signal0,sft_r063:1;/向右移位,最高位输入新数据4.2.4 移位寄存器本设计采用Cyclone芯片内部M4K结构配置移位寄存器对数据实时采集,并且设置2个按键调节控制采集频率。图4.4为M4K移位寄存器原理图。它的参数w,m,n分别表示为输入输出的数据位宽,移位寄存器的一个taps位宽,总的taps数量。这三个参数相乘得到的结果就是占用的M4K存储空间的大小。从图中可得知,每个
34、clk输入时,有一个移位数据和一个输出数据,M4K内部则是每个clk周期移位一次,每个tap的输出直接移位到下一个tap的输入,配置后的输出里可以看到每个tap的最后一个w位宽的数据。本设计共使用16组移位寄存器来采集数据,sft_r063:0到sft_rf63:0这16组数据就是16路输入信号在触发后,最终需要显示到液晶屏供用户观察的连续64个采集值。这16个数组一直以移位寄存器的方式不断的读进新的采集值,直到触发信号到来,根据采集模式的不同,在相应的时刻这个移位寄存器停止工作,当前的64位采用值也就固定不变了。移位寄存器部分代码:reg63:0 sft_r0; always (posedg
35、e clk_100m or negedge rst_n)if(!rst_n) sft_r0 = 64d0;else if(sampling_start) sft_r0 = signal0,sft_r063:1;图4.4 M4K移位寄存器原理图4.2.5 数据采集模块接口定义信号采集模块sampling_ctrl.v的输入接口定义如表4.4所示表4.4输出接口定义信号名方向功能描述clk_100minputFPAG 采集时钟信号,频率为100MHzrst_ninput系统复位信号,低电平有效signal15:0input16 路被采集信号TriggerInput1 路触发信号,可配置为上升沿或者
36、下降沿触发tri_modeinput触发信号模式选择,1-上升沿触发,0-下降沿触发sampling_mode2:0input采集模式选择,高电平表示选中。001-MODE1,010-MODE2,100-MODE3add_keyinput按键用于控制采集频率的降低,低电平表示按下dec_keyInput按键用于控制采集频率的提高,低电平表示按下sampling_clr_nInput采集清除信号,用于清除当前采集数据,低有效disp_ctrloutputVGA 触发且采集完成,显示波形使能sampling_rate3:0output采集率设置寄存器, 0-100M, 1-50M, , 9-10s
37、ft_r063:0output移位寄存器组 0,送给 VGA 显示的数据sft_r163:0output移位寄存器组 0,送给 VGA 显示的数据sft_r263:0output移位寄存器组 0,送给 VGA 显示的数据sft_r363:0output移位寄存器组 0,送给 VGA 显示的数据sft_r463:0output移位寄存器组 0,送给 VGA 显示的数据sft_r563:0output移位寄存器组 0,送给 VGA 显示的数据sft_r663:0output移位寄存器组 0,送给 VGA 显示的数据sft_r763:0output移位寄存器组 0,送给 VGA 显示的数据sft_r
38、863:0output移位寄存器组 0,送给 VGA 显示的数据sft_r963:0output移位寄存器组 0,送给 VGA 显示的数据ft_ra63:0output移位寄存器组 a,送给 VGA 显示的数据ft_rb63:0output移位寄存器组 a,送给 VGA 显示的数据ft_rc63:0output移位寄存器组 a,送给 VGA 显示的数据ft_rd63:0output移位寄存器组 a,送给 VGA 显示的数据ft_re63:0output移位寄存器组 a,送给 VGA 显示的数据ft_rf63:0output移位寄存器组 a,送给 VGA 显示的数据时钟clk_100m是由PLL
39、电路对FPGA输入的25MHz晶振时钟倍频得到的,用于对16路待采集信号的采集。触发信号模式选择输入tri_mode和采集模式选择输入。sampling_mode2:0都是直接由FPGA外部的一组拨码开关控制的。用户可以通过拨码开关控制这些输入电平为高或者低,从而设置不同的触发和采集模式。触发信号输入trigger可以配置成上升沿有效或者下降沿有效。若设置为上升沿有效(拨码开关设置 tri_mode=1),则当FPGA检测到trigger的输入电平由0到1跳变时,FPGA就根据一定的采集模式将采集到的16路信号显示到液晶屏上。若设置为下降沿有效(拨码开关设置tri_mode=0),则当FPGA
40、检测到trigger的输入电平由1到0跳变时,相应显示16路信号的一组采集值。disp_ctrl信号用于控制液晶屏是否显示波形,只有当触发信号有效后(出现上升沿或者下降沿),disp_ctr才会被置高电平,液晶屏才会显示采集到的数据波形。add_key和dec_key是两个按键,FPGA中设计了一个按键检测电路用于处理它们的键值。按键未被按下时保持高电平,按下则相应键值为低电平,设计中通过20ms间隔采集和脉冲边沿检测法实现这个按键的检测。这两个按键每次有效按下后,相应的提高或者降低信号采集的频率。也就是说,用这两个按键可以设置10档采集频率。采集清除信号sampling_clr_n也是FPG
41、A外部的一个按键,该按键的作用就是清除之前采集到的数据以及当前显示的采集波形,准备下一次数据采集。sampling_rate3:0表示了当前的数据采集频率,它输出到VGA显示模块,主要是用于液晶屏显示相应的数值,便于用户把握当前的采集频率值。本文利用Cyclone芯片内部M4K结构配置移位寄存器结合普通的组合触发方式,对数据实时采集,并且设置2个按键调节控制采集频率,通过FPGA外部的一组拨码开关控制输入电平的高或者低,从而设置不同的触发和采集模式。使本逻辑分析仪能够有效的在测量中将复杂的数据流进行分段采集、存储、观察和分析。4.3 VGA显示模块4.3.1 VGA接口原理视频图形阵列( HY
42、PERLINK /wiki/%E8%8B%B1%E8%AF%AD o 英语 英语:Video Graphics Array,简称VGA)是 HYPERLINK /wiki/IBM o IBM IBM于1987年提出的一个使用 HYPERLINK /wiki/%E9%A1%9E%E6%AF%94%E8%A8%8A%E8%99%9F o 模拟信号 模拟信号的计算机显示标准。尽管VGA如今已经显得过时,但它仍然是最多制造商所共同支持的一个标准,个人计算机在加载自己的独特驱动程序之前,都必须支持VGA的标准。通过对FPGA编程,可以输出RGB三基色信号和HSYNC行同步信号、VSYNC场同步信号。当输
43、出的控制信号送到FPGA内部时,根据控制信号数据选择器会选通相对应的图像生成模块输出图像信号,之后通过15针D型接口电路与行场扫描信号一起送入VGA显示器,在VGA显示器就会有彩色图像显示。它的接口图如图4.5所示。图4.5 VGA接口VGA的接口定义如下表4.5所示。表4.5 VGA接口定义管脚定义1红基色 red2 绿基色 green3 蓝基色 blue4地址码 10 Bit5自测试(各家定义不同)6红地7绿地8蓝地9保留(各家定义不同)10数字地11地址码12地址码13行同步14场同步15地址码(各家定义不同)对于VGA显示器来说,真正用到的信号只有RGB三基色信号和HSY行同步信号、V
44、SY场同步信号这五个信号。它们的时序驱动要严格遵循“VGA工业标准”,即64048060HZ模式,否则无法显示正确地图象。如果需要在显示设备上显示一幅图片,则可以设置相应的计数器,产生出水平和垂直扫描信号,并将图片信息保存在ROM中,然后从ROM中读入缓冲区,不停的刷新即可。VGA接口的部分代码如下:input clk_25m;/ 25MHzinput rst_n; /低电平复位/ FPGA与VGA接口信号output hsync; /行同步信号output vsync; /场同步信号output2:0 vga_r;output2:0 vga_g;output1:0 vga_b;reg hsy
45、nc_r,vsync_r;/同步信号always (posedge clk_25m or negedge rst_n)if(!rst_n) hsync_r = 1b1;else if(x_cnt = 10d0) hsync_r = 1b0;/产生hsync信号else if(x_cnt = 10d96) hsync_r = 1b1;always (posedge clk_25m or negedge rst_n)if(!rst_n) vsync_r = 1b1; else if(y_cnt = 10d0) vsync_r = 1b0;/产生vsync信号else if(y_cnt = 10d2
46、) vsync_r = 1b1;assign hsync = hsync_r;assign vsync = vsync_r;/有效显示标志位产生reg valid_yr;/行显示有效信号always (posedge clk_25m or negedge rst_n)if(!rst_n) valid_yr = 1b0;else if(y_cnt = 10d32) valid_yr = 1b1;else if(y_cnt = 10d512) valid_yr = 1b0;wire valid_y = valid_yr;reg valid_r;/ VGA有效显示区标志位always (posedg
47、e clk_25m or negedge rst_n)if(!rst_n) valid_r = 1b0;else if(x_cnt = 10d141) & valid_y) valid_r = 1b1;else if(x_cnt = 10d781) & valid_y) valid_r = 1b0;wire valid = valid_r;4.3.2 VGA字符显示若要显示字符,首先得获得字模数据,在本模块的设计中使用字模软件 PCtoLCD2002,显示字符获得字模的数据,该字模软件的1bit代表一个像素点的色彩,可以根据需要来决定这1bit数据(0或1)代表的色彩。PCtoLCD2002字
48、模配置界面如图4.6所示。图 4.6 PCtoLCD2002 字模配置界面字符的取模要用到PCtoLCD2002这个软件,单击菜单“模式”,选择“字符模式”。菜单栏中单击“选项”,弹出对话框,在其中进行设置。这里主要是针对取模的方向,输出数据的格式等进行配置,配置完成后单击“确定”。之后在输入文字处输入想要输入的字,单击“生成字模”,输出字模数据如下:0000000002000020将上面的字模数据定义为Verilog的参数,用于VGA显示。每一字符的像素都是816个像素,一个数据要占用16字节的空间,而一行要用去1个字节相当于8个像素的数据。parameter char_addr=24h00
49、000000, char_addr=24h 02000020,字模取模输出数制为十六进制,方式为三种,分别为采取阴码的高位在前的逆向取模走向,点阵格式以及逐行式。一个字节的开始是从第一行向右的每8个字节,若不足8个点就补满8位取模顺序是从高到低,即第一个点作为最高位。如图4.7所示,为输入文字“DIY 逻辑分析仪”的输出字模数据:图 4.7 字模数据下面举例说明如何将字模数据送到显示屏幕的制定位置。假设有3个字符要求送到显示屏幕上,那么首先要把这3个字符看做一个整体,即共占用2416个像素点。假设显示字符的坐标区域是从(0,0)坐标到(23,16)坐标,当坐标计数从(0,0)开始计数,到23的
50、值的期间就要判断char_addr的位23的值。之后会判断送出何种色彩,VGA色彩的定义如表4.6所示。当坐标计数到(0,1)时,相应的要判断char_addr的位22的值。以此类推,直到坐标计数到(0,23)时,判断char_addr的位0的值。如此一来,就完成了一次字模数据的译码。当所有的字模数据都寻址完后,屏幕上就会显示出想要显示的字了。表4.6 VGA色彩的定义RGB = 000黑色RGB = 100红色 = 001蓝色= 101紫色 = 010绿色= 110黄色 = 011青色= 111白色VGA字符坐标代码如下:reg9:0 x_cnt;/行坐标reg9:0 y_cnt;/列坐标a
51、lways (posedge clk_25m or negedge rst_n)if(!rst_n) x_cnt = 10d0;else if(x_cnt = 10d799) x_cnt = 10d0;else x_cnt = x_cnt+1b1;always (posedge clk_25m or negedge rst_n)if(!rst_n) y_cnt = 10d0;else if(y_cnt = 10d524) y_cnt = 10d0;else if(x_cnt = 10d799) y_cnt = y_cnt+1b1;4.3.3 VGA显示模块接口定义VGA显示驱动控制模块vga_
52、ctrl.v的输入输出接口定义如表4.7所示。表4.7 VGA显示模块接口定义信号名称方向描述clk_25minputVGA时序驱动时钟,频率为25MHzrst_ninput系统复位信号,低电平有效sampling_mode2:0input采集模式选择,高电平表示选中。001-MODE1,010-MODE2,100-MODE3tri_modeinput触发信号模式选择,1-上升沿触发,0-下降沿触发disp_ctrlinputVGA触发且采集完成,显示波形使能sampling_rate3:0input采集率设置寄存器,0-100M,1-50M,9-10Ksft_r063:0input移位寄存器
53、组 0,送给 VGA 显示的数据续表4.7 VGA显示模块接口定义信号名称方向描述sft_r163:0input移位寄存器组 0,送给 VGA 显示的数据sft_r263:0input移位寄存器组 0,送给 VGA 显示的数据sft_r363:0input移位寄存器组 0,送给 VGA 显示的数据sft_r463:0input移位寄存器组 0,送给 VGA 显示的数据sft_r563:0input移位寄存器组 0,送给 VGA 显示的数据sft_r663:0input移位寄存器组 0,送给 VGA 显示的数据sft_r763:0input移位寄存器组 0,送给 VGA 显示的数据sft_r96
54、3:0input移位寄存器组 0,送给 VGA 显示的数据sft_ra63:0input移位寄存器组 0,送给 VGA 显示的数据sft_rb63:0input移位寄存器组 0,送给 VGA 显示的数据sft_rc63:0input移位寄存器组 0,送给 VGA 显示的数据sft_rd63:0input移位寄存器组 0,送给 VGA 显示的数据sft_re63:0input移位寄存器组 0,送给 VGA 显示的数据sft_rf63:0input移位寄存器组 0,送给 VGA 显示的数据HsyncoutputVGA 行同步信号VsyncoutputVGA 场同步信号vga_r2:0outputV
55、GA 色彩vga_g2:0outputVGA 色彩vga_b2:0outputVGA 色彩该模块的时钟clk_25m是由PLL电路对FPGA输入的25MHz晶振时钟分频后得到的,用于VGA工作于640*480/60Hz的驱动时钟。采集模式选择信号sampling_mode2:0和触发信号模式选择tri_mode都是由FPGA 外部拨码开关控制的输入信号。波形显示控制位disp_ctrl和采集频率寄存器sampling_rate3:0都是由上一个模块sampling_ctrl.v送过来的。这些信号之所以要输入到该模块,主要传递一些需要显示到液晶屏上的字符的相关信息。也就是说该模块就是要完成这样一
56、个基本的显示界面的设计。而sampling_rate3:0、tri_mod和 sampling_mode2:0这几组信号也就是传递了Sampling Period: 、Trigger mode: 和Sampling Mode:这些选项后的集体参数信息。disp_ctrl则是控制着主界面中是否显示信号的波形。该模块中的很多字模数据并不是由其它模块送过来的,它充分利用了M4K存储块配置了一些ROM,这些ROM里就存储了这些字符的字模数据。第5章 时序约束与仿真验证5.1 PLL仿真与时序5.1.1 PLL仿真在Quartus里面例化的PLL模块,输入为inclk0,25MHz,输出为c0和c1,分
57、别为25M和100M。PLL的仿真结果如图5.1所示,从图片可以看出,时钟c1经过4分频后,产生c0的时钟频率是c1的4倍,基本验证了PLL模块的功能。图5.1 PLL的仿真结果5.1.2 时序分析简介静态时序分析(英语:Static Timing Analysis, STA)的原理是,首先提取出电路的所有时序路径,之后再在计算这些信号的传播延时,检查其建立时间与保持时间有没有超出时序所规定的范围。之后再采用穷尽分析方法来分析最大路径延时和最小路径延时,找出和时序约束不符的地方。它的优点是,不用输入向量就能穷尽所有的路径,而且它占用内存较少,速度也很快。因此,静态时序分析的使用,越来越多的数字
58、集成电路设计中被采用,一方面它可以进行全面的时序功能检查,另一方面还可利用时序分析的结果来优化设计。5.1.3 时序分析工具TimeQuestTimeQuests Timing Analyzer是一个功能强大的时序分析工具采用Synopsys Design Constraints(SDC)文件格式作为时序约束输入,不同于Timing Analyzer采用的Quartus Settings File(QSF)约束文件。这正是TimeQuest的优点:采用行业通用的约束语言而不是专有语言,有利于设计约束从FPGA向ASIC设计流程迁移;有利于创建更细致深入的约束条件。做为Altera FPGA开发
59、流程中的一个组成部分,TimeQuest执行从验证约束到时序仿真的所有工作。如图5.3所示,Altera推荐使用下面的流程来完成TimeQuest的操作。图5.2 TimeQuest的操作流程5.1.4 PLL时序约束在Altera的FPGA中,PLL电路是通过ALTPLL的IP库被添加到设计中的。图5.3是一个典型的ALTPLL的结构图。图5.3 ALTPLL的结构图图上可以看到,当我们选定了基准时钟和PLL的参数以后,PLL的输出c0和c1的参数就随之确定了。所以在QuartusII环境下,可以通过一个简单的命令让软件自动生成PLL输出的时钟的时序约束。derive_pll_clocks这
60、个命令会自动创建时钟信息输出的C0和C1的相关时序约束。 这个命令会自动创建PLL输出的C0和C1的相关时序约束。同样的,在sdc文件里添加该命令,然后编译,在TimeQuest里查看时钟信息。如图5.4所示,derive_pll_clocks在系统里添加了两个时钟,PLL1|altpll_component|auto_generated|pll1|clk0和PLL1|altpll_component|auto_generated|pll1|clk1。可以看出,时钟是按“PLL层次结构+时钟端口名字”的规则命名的。时钟的类型为created clock,周期频率是在PLL里设定好的。Clock
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 信阳市重点中学2025年高三下学期第一次模拟考试化学试题试卷-解析版含解析
- 2025至2031年中国窗户执手行业投资前景及策略咨询研究报告
- 2025至2031年中国立杆行业投资前景及策略咨询研究报告
- 广东省广州市南沙区重点中学2024届中考数学最后冲刺模拟试卷含解析
- 2024-2025车间安全培训考试试题及下载答案
- 2024-2025员工安全培训考试试题附完整答案(网校专用)
- 2025公司职工安全培训考试试题附参考答案(夺分金卷)
- 2025年公司级员工安全培训考试试题附答案(典型题)
- 2025年企业主要负责人安全培训考试试题含答案(能力提升)
- 2025公司、项目部、各个班组安全培训考试试题【必考】
- JTS105-1-2011 港口建设项目环境影响评价规范
- 人工智能在智能制造的应用案例分析
- 输电线路(电缆)工程施工作业票典型模板(2024版)
- 财税代理公司客服培训课件
- 船舶安全与可靠性研究
- 国开电大《人文英语3》一平台机考总题库珍藏版
- 医疗技术分级与人员准入授权管理制度
- 《挠挠小怪兽》小班韵律课件
- 民宿消防应急预案方案范本
- 廉洁诚信承诺书(模板)
- 《小数的初步认识》教案设计 沈志荣公开课
评论
0/150
提交评论