欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    VHDL课程设计.doc

    • 资源ID:4146816       资源大小:1,015.50KB        全文页数:25页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    VHDL课程设计.doc

    目 录1 引言11.1 EDA介绍11.2 任务说明12 系统设计22.1系统概述22.2 系统原理22.3 系统封装图33 程序设计43.1系统结构示意图43.2 分频程序43.2.1 分频程序原理43.2.2 分频程序仿真53.3 位选程序63.3.1 位选程序原理63.3.2 位选程序仿真73.4 时钟程序83.4.1 时钟程序原理83.4.2 时钟程序仿真93.5 计数程序93.5.1 计数程序原理93.5.2 计数程序仿真113.6 BCD码转换113.6.1 BCD码转换原理113.6.2 BCD码程序仿真133.7顶层文件143.7.1 顶层文件介绍及仿真143.7.2硬件调试154 总结17参考文献18附录191 引言1.1 EDA介绍EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪60年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。1.2 任务说明简易数字频率计是用数字显示被测信号频率的仪器,被测信号可以是正弦波,方波或其它周期性变化的信号。如配以适当的传感器,可以对多种物理量进行测试,比如机械振动的频率,转速,声音的频率等。其具有高速、精确、可靠、抗干扰性强和现场可编程等优点。因此,数字频率计是一种应用很广泛的仪器 。本次EDA课程设计题目为简易数字频率计设计,实现对于1HZ-10MHZ的方波信号进行测量。该频率计包括4个不同的档位,具有记忆功能和总体的复位功能。需要利用VHDL(硬件描述语言)通过Quartus II编程软件进行程序的编写和调试、仿真。并将程序下载到硬件上进行实际观测。2 系统设计2.1系统概述本设计基于可编程逻辑器件FPGA,使用VHDL进行设计、综合、仿真以及实现。通过编程,根据选择的档位对输入的方波信号进行频率的测量,并且显示在四位七段数码管上,当数值溢出时进行报警指示。2.2 系统原理本设计共分成五个子模块程序:分频(fpq)程序、位选(wxq)程序、时钟(szq)程序、计数(jsq)程序、BCD转换(bcd)程序。通过五个模块相互配合实现简易数字频率计的功能。各模块间的连接关系如下所示:图1 系统原理图系统原理为:待测的方波信号首先通过分频模块,进行10/100/1000分频,产生10倍/100倍/1000倍及原待测信号共四路方波信号。然后将四路信号送入位选功能模块,通过四个输入开关对该四路方波的选择。位选模块所选择的方波信号送入计数模块后,与输入的系统基准时钟clk配合,计数得到输入方波的信号频率,最后送入bcd转换模块,将四位十进制数据转化成四组4位BCD码。本设计具有记忆功能,在测量过程中不刷新数据,等数据测量过程结束后才显示测量的频率值,并保存到下一次测量结束,此频率计有整体异步复位功能。2.3 系统封装图图2 系统封装图系统封装图如图2所示,其中shuru为待测试的方波输入端,clk为系统时钟频率输入端,rst为复位端,ginp为频率计乘1档端,sinp为频率计乘10档,sinp为频率计乘100档,binp为频率计乘1000档。gout,sout,bout,qout分别为四路档位对应的标志位,通过四个LED灯点亮实现,cc为超量程警告位,通过一个LED灯闪烁实现。gw,sw,bw,qw分别输出四位BCD码,并通过数码管显示,分别表示千位,百位,十位,个位。当系统工作时,四个数码管所显示数据乘以档位即使所测量的方波的频率。3 程序设计3.1系统结构示意图图3 系统结构示意图3.2 分频程序3.2.1 分频程序原理该部分程序中使用process,其中敏感信号列表中为shuru,即待测方波信号。系统备有×1档,×10档,×100档,×1000档,即需对待测方波进行10倍,100倍,1000倍的分频,通过定义三个变量,以待测方波为时钟进行计数,则需要程序中计数器计分别计数到5,50,500时对四路输出信号进行逻辑非运算。分频程序代码:library ieee;use ieee.std_logic_1164.all;entity fpq isport(shuru:in std_logic; ao,bo,co,do:buffer std_logic);end fpq;architecture bhv of fpq isbeginao<=shuru;process(shuru)variable nu,nu1,nu2:integer range 0 to 1000:=0;beginif(shuru 'event and shuru ='1')then nu:=nu+1;nu1:=nu1+1;nu2:=nu2+1;if(nu=5)then bo<=not bo; nu:=0;end if;if(nu1=50)then co<=not co; nu1:=0;end if;if(nu2=500)then do<=not do; nu2:=0;end if;end if;end process;end bhv;该程序封装图如下图所示:图4 分频程序封装图3.2.2 分频程序仿真该部分程序仿真波形如下图5所示:图5 分频程序仿真图分频程序仿真参数设定shuru1为输入的预测方波信号,ao,bo,co,do为四个输出信号,分别为对输入shuru1进行分频后以及本来方波信号,由图中可以看出ao频率与fb1频率相同,bo频率为fb1频率的1/10,co频率为fb1频率的1/100,do频率为fb1频率的1/1000。3.3 位选程序3.3.1 位选程序原理该部分程序包含复位端rst,四个输入信号ai,bi,ci,di分别接分频程序的四路分频后的方波信号,通过四个开关控制端k1,k2,k3,k4分别选择输出信号的选择,例如若k1为高电平,则fb0等于ai的输入信号。位选程序与分频程序公共构成频率计四个档位测量功能。位选程序代码:library ieee;use ieee.std_logic_1164.all;entity wxq isport(ai,bi,ci,di,rst:in std_logic; ginp,sinp,binp,qinp:in std_logic; gout,sout,bout,qout:out std_logic; shuru0:out std_logic);end wxq;architecture bhv of wxq isbegin process(rst, ginp,sinp,binp,qinp, gout,sout,bout,qout)beginif(rst='1')then gout<='0'sout<='0'bout<='0'qout<='0'shuru0<='0'elsif(ginp='1')then gout<='1'sout<='0'bout<='0'qout<='0' shuru0<=ai;elsif(sinp='1')then gout<='0'sout<='1'bout<='0'qout<='0' shuru0<=bi;elsif(binp='1')then gout<='0'sout<='0'bout<='1'qout<='0' shuru0<=ci;elsif(qinp='1')then gout<='0'sout<='0'bout<='0'qout<='1' shuru0<=di;end if;end process;end bhv;位选程序封装图如下图所示:图6 位选程序封装图封装图中输入信号ai,bi,ci,di为四路分频后的方波信号,ginp、binp、binp、qinp这四档开关选择输入信号,该程序中复位端rst为高电平时,将ginp、binp、binp、qinp四个开关控制端对应的输出信号gout、sout、bout、qout分别置零,在硬件电路中用四个LED灯的亮灭表示,测量时必须有且仅有一个灯点亮,否则为违规操作,测量数据错误。3.3.2 位选程序仿真该部分程序仿真波形如下图7所示:图7 位选程序仿真图由仿真图中可以看出,输入信号其中qinp为高电平,ginp、binp、binp皆为低电平,则相对应的输出信号qout为高电平,shuru0波形与第4路输入信号di相同。复位信号在前端有一正脉冲,即当为高电平时,所有的输出信号皆为低电平。此后,sinp为高电平而其它3档为低电平时,输出信号sout为高电平,shuru0波形与第2路输入信号bi相同。3.4 时钟程序3.4.1 时钟程序原理该部分程序是为实现得到0.5Hz的系统基准时钟(高低电平各为1秒),用以对待测方波频率的计数测量。由于硬件中系统时钟频率并不能锁定0.5Hz,则需要对输入的时钟频率进行分频,本系统中选择硬件中时钟clk2引脚的8Hz时钟,则需要对其进行16倍的分频。时钟程序代码:library ieee;use ieee.std_logic_1164.all;entity szq isgeneric (v:integer:=8);port(clki:in std_logic; clko:buffer std_logic);end szq;architecture bhv of szq isbegin process(clki)variable count:integer range 0 to v;beginif(clki'event and clki='1')then count:=count+1; if(count=v)then clko<=not clko; count:=0; end if;end if;end process;end bhv;时钟程序封装如图8所示:图8 时钟程序封装图图中输入信号clki为系统时钟频率,clko为输出信号,作为计数程序的基准时钟。该时钟程序仍为一个分频程序,系统时钟频率作为进程中敏感信号列表的值,当定义的计数变量计数到8时对输出clko进行逻辑非运算,并将变量置零,从而得到0.5Hz的时钟信号。此部分为计数部分输入时钟信号,作为频率测量的基准信号。3.4.2 时钟程序仿真程序仿真波形如下图9所示:图9 时钟程序仿真图其中输入信号clki为系统的时钟信号,输出信号clko为分频后得到的时钟信号,由上图中可以看出,clko的频率为clki的1/16。因为系统输入时钟频率选为8Hz,则clko时钟频率则为0.5Hz。3.5 计数程序3.5.1 计数程序原理该部分为本次课程简易频率计系统设计的核心部分,此处程序实现对于方波频率的测量。需要说明的是,此处所得到的测量结果为频率计选择档位后的值,即输出的频率需要乘以档位,最终所得到数据才为所测量方波的频率值。程序中以0.5Hz频率的时钟信号为基准脉冲,设置在一变量n,当时钟脉冲为高电平时对输入的方波上升沿进行计数,当时钟脉冲为地电平时,计数结束,并输出。由于要求不能数码显示不能有变化的过程。这里定义一个变量m,当时钟脉冲为高电平时将计数值即n的值赋给m,当时钟脉冲为低电平时,将m值送入输出信号q,由于下一个m送入时需要时钟脉冲进入下一个地电平,借此达到输出q值一直不变的要求.计数程序代码:library ieee;use ieee.std_logic_1164.all;entity jsq isport(shuru,clk:in std_logic; cc:out std_logic; q:out integer range 0 to 10000);end jsq;architecture bhv of jsq isbeginprocess(shuru,clk) variable n:integer range 0 to 10000; variable m:integer range 0 to 10000;beginif(clk'stable)then if(shuru 'event and shuru ='1')then n:=n+1; m:=n; if(n>9999 or n=0)then cc<='1' q<=0; end if; end if; end if; if(clk='0')then q<=m; n:=0; cc<='0'end if;end process;end bhv;程序封装如下图3-7所示:图10 计数程序封装图封装图中shuru为经过选档后的方波信号,clk为0.5Hz的计数基准时钟信号。输出信号cc为超量程警告,q为计数得到频率数值。计数程序中包含了系统对于测量数据超量程的处理,当计数值超过9999时,cc就会出现高低电平脉冲的持续变换,硬件中锁一LED灯,将显示不断闪烁。此时为超量程,数码管显示值为错误量。3.5.2 计数程序仿真计数程序仿真波形如下图11所示:图11 计数程序仿真图由于仿真所限,此处并未使用0.5Hz时钟信号作为输入时钟信号。图中clk时钟频率为0.2MHz,shuru为频率为100MHz,可以看出,shuru为clk频率的500倍,由于只有当clk为高电平时计数,所以得到计数结果q值为250。同理,若clk频率为0.5Hz,则其高电平持续时间即为1s,所得到的计数结果250极为shuru信号相应频率值,即此时输入方波频率为250Hz。此仿真图中并未显示超过量程现象,此功能将在顶层文件中说明。3.6 BCD码转换3.6.1 BCD码转换原理由于计数程序输出结果为0到10000范围内的整型数据,若想通过模式5锁定引脚,并在四个数码管上显示,则需要首先对其进行BCD码的转换。该部分程序中也包括系统复位功能的实现。程序中分别设置三个常量a,b,c其值分别为1000,100,10。首先将输入整形数据qi除以a,即1000,得到所得数据即为千位数值x1,令qi减去x1乘以1000,极为qi中除去千位后剩余的三位数值,同理继续进行算法,则能得到百位,十位,个位的数值,即将输入的整型数据qi转换成BCD码完成。因为使用模式5,硬件中自带译码功能,直接可用于数码显示。用四个数码管分别表示千位,百位,十位,个位,再乘以相应档位,即可得到频率计的测量数值。BCD转换代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_signed.all;use ieee.std_logic_arith.all;entity bcd isport(qi:in integer range 0 to 10000; rst:in std_logic; gw,sw,bw,qw:buffer std_logic_vector(3 downto 0);end bcd;architecture bhv of bcd isbeginprocess(qi)constant a:integer:=1000;constant b:integer:=100;constant c:integer:=10;variable x1,x2,x3,x4,y,z:integer range 0 to 1000;beginif(rst='1')thenx1:=0;x2:=0;x3:=0;x4:=0;else x1:=qi/a;y:=qi-x1*1000;x2:=y/b;z:=y-x2*100;x3:=z/c;x4:=z-x3*10;end if;qw<=conv_std_logic_vector(x1,4);bw<=conv_std_logic_vector(x2,4);sw<=conv_std_logic_vector(x3,4);gw<=conv_std_logic_vector(x4,4);end process;end bhv;频率计程序封装图如图12所示:图 12 频率计程序封装图封装图中qi为经过分频后的方波计数得到的数据,为09999范围内的整型数据,qw、bw、sw、gw为四位BCD码,分别表示十进制数的千位、百位、十位、个位的数值。程序中复位信号rst为高电平时,控制四个输出信号都为0,即四个数码管都显示0,达到复位功能。3.6.2 BCD码程序仿真程序仿真图如下图13所示:图13 BCD码程序仿真图程序仿真前输入信号qi值分别设置了9999,8649,1234三个值,并设置1个rst的正脉冲。由上图中可以看到,其中当qi为9999时,各位输出值组合为9999;当复位信号rst为高电平时,四个输出信号值皆为0;当qi值为8649时,四位输出为8,6,4,9四个值。同样,当qi值为1234时,四位BCD,码显示1,2,3,4。 3.7顶层文件3.7.1 顶层文件介绍及仿真该程序分为五个部分,分别实现预定的功能,然后通过元件例化的方式,组合在一起,编写顶层文件,组合在一起,形成整个系统,各功能相互配合以实现简易频率计的设计,封装图如图14所示:图14 顶层文件封装图顶层文件程序中设置一系列的信号,将五个部分的程序输入输出信号相对应的连接起来,并与整个系统的封装引脚相对应。同时将五个程序分别编译后生成的.vhd文件加载进来,然后进行编译,仿真。图15为顶层文件仿真图:图15 顶层文件程序仿真图由于仿真所限,此处并未按实际需要进行参数设定。其中,系统时钟频率clk设定为0.5MHz,预测试方波频率值设定为100MHz,由图中可以看出,此时频率计使用binp档进行测试,所得到的数据为16,该数据再乘以100得到的最后值1600才为仿真欲要得到的数据(注:由于输入的系统时钟频率为0.5MHz ,而实际应用的为8Hz,则系统时钟和预测试方波频率都缩小0.5M÷8=62500倍)。仿真时设定了复位参数,由图中可看出当复位信号rst为高电平时,所有的输出都会置零或变为低电平,可实现总体复位功能。该系统含有对于预测试频率超量程的标志,如下图16所示:图16 测量超量程仿真 由于频率计设计包括了四个档位,其中乘1档测试频率范围为1Hz9999Hz,乘10档测试频率范围为10Hz99990Hz,乘100档测试频率范围为100Hz999900Hz,乘1000档测试频率范围为1000Hz9999000Hz,所以相对应的档位,预测试的频率一旦超过量程就会出现错误显示。这里以乘1档为例,仿真参数中ginp为高电平,系统时钟信号clk频率设定为0.05MHz,预测方波频率设定为100MHz,则需程序中计数器计到16000,产生溢出,所示输出信号cc会出现正脉冲信号,若硬件锁定在一个LED灯引脚,则会不断亮灭闪烁,以表示超量程,此时数码管数据错误。3.7.2硬件调试顶层文件编译仿真完成后对顶层文件程序中各个输入输出信号进行引脚锁定,硬件试验箱选用模式5,其中数码管自带译码功能。其中重要的一点是系统基准时钟引脚应锁定为clk2引脚,待测方波shuru锁定右侧clk0引脚。具体引脚锁定如下图17中所示:图17 引脚锁定图锁定引脚完成后,对程序再次进行编译,然后下载到目标芯片中,通过硬件测试,检查频率计的各项功能,包括1Hz10MHz频率测试,数据在四个数码管上的显示,频率计档位切换,系统复位功能,超量程报警等。4 总结此次EDA课程设计历时两周时间,我和伙伴两人一组合作进行简易数字频率计系统的设计。程序的编写我们采用元件例化的形式,经过思考和相互间的分析讨论,将整个系统划分五个功能模块,彼此配合进行五个功能模块设计和程序的编写。其间,我们亦遇到许多问题,诸如整个系统核心模块计数过程的实现,时钟频率的设定,将整形数据转换成BCD码显示的算法等等。另外,我们还对频率计的自动换挡功能进行了探索,编制出了相应的程序,然而我们又从实际的角度出发,最终认为手动换挡更符合人在实际使用时的习惯。经过两周时间的不懈努力和伙伴间契的配合,我们终于完成预定的目的,完成整个简易数字频率计的设计。虽然其中遇到很多困难,很多问题,但在我们两人相互支持和鼓励下,都能够得以顺利的找到解决办法或者改进的方法,并在合作中相互提高,彼此进步,在困难在中体会到合作的乐趣。EDA技术极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度,是一门实际应用很广泛的技术。现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。总而言之,这次EDA课程设计对我们理论学习和实践能力的提高有十分重要的意义,帮助我巩固了VHDL程序设计和数字电子技术知识,提高了我的自学能力与合作精神,这对我以后的学习与工作会很有很大的帮助。参考文献1Voknei A.Pedroni.VHDL数字电路设计教程.电子工业出版社,2008.52潘松,黄继业.EDA技术实用教程(第二版).科学出版社,2005.23焦素敏.EDA应用技术.清华大学出版社,2002.44刘延飞等.基于Altera FPGA/CPLD的电子系统设计及工程实践.北京:人民邮电出版社,20095王新.EDA技术与虚拟实验.徐州:中国矿业大学出版社,2007附录顶层文件程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity plj isport(fb,clk,rst:in std_logic; k1,k2,k3,k4:in std_logic; g1,g2,g3,g4,g5:out std_logic; d1,d2,d3,d4:out std_logic_vector(3 downto 0);end plj;architecture bhv of plj issignal h0,h1,h2,h3:std_logic;signal s0,s1,s2:std_logic;signal p0:integer range 0 to 10000;component fp isport(fb1:in std_logic; ao,bo,co,do:buffer std_logic);end component;component wx isport(ai,bi,ci,di,rst:in std_logic; k1,k2,k3,k4:in std_logic; g1,g2,g3,g4:out std_logic; fb0:out std_logic);end component;component sz isport(clki:in std_logic; clko:buffer std_logic); end component; component js is port(fb,clk:in std_logic; g5:out std_logic; q:out integer range 0 to 10000); end component; component bcd is port(qi:in integer range 0 to 10000; rst:in std_logic; d1,d2,d3,d4:buffer std_logic_vector(3 downto 0); end component; begin u1:fp port map(fb1=>fb,ao=>h0,bo=>h1,co=>h2,do=>h3); u2:wx port map(k1=>k1,k2=>k2,k3=>k3,k4=>k4,ai=>h0,bi=>h1,ci=>h2,di=>h3, rst=>rst,fb0=>s0,g1=>g1,g2=>g2,g3=>g3,g4=>g4); u3:sz port map(clki=>clk,clko=>s1); u4:js port map(fb=>s0,clk=>s1,g5=>g5,q=>p0); u5:bcd port map(qi=>p0,rst=>rst,d1=>d1,d2=>d2,d3=>d3,d4=>d4); end bhv;分频程序u1:library ieee;use ieee.std_logic_1164.all;entity fp isport(fb1:in std_logic; ao,bo,co,do:buffer std_logic);end fp;architecture bhv of fp isbeginao<=fb1;process(fb1)variable nu,nu1,nu2:integer range 0 to 1000:=0;beginif(fb1'event and fb1='1')then nu:=nu+1;nu1:=nu1+1;nu2:=nu2+1;if(nu=5)then bo<=not bo; nu:=0;end if;if(nu1=50)then co<=not co; nu1:=0;end if;if(nu2=500)then do<=not do; nu2:=0;end if;end if;end process;end bhv;位选程序u2:library ieee;use ieee.std_logic_1164.all;entity wx isport(ai,bi,ci,di,rst:in std_logic; k1,k2,k3,k4:in std_logic; g1,g2,g3,g4:out std_logic; fb0:out std_logic);end wx;architecture bhv of wx isbegin process(rst,k1,k2,k3,k4,ai,bi,ci,di)beginif(rst='1')then g1<='0'g2<='0'g3<='0'g4<='0'fb0<='0'elsif(k1='1')then g1<='1'g2<='0'g3<='0'g4<='0' fb0<=ai;elsif(k2='1')then g1<='0'g2<='1'g3<='0'g4<='0' fb0<=bi;elsif(k3='1')then g1<='0'g2<='0'g3<='1'g4<='0' fb0<=ci;elsif(k4='1')then g1<='0'g2<='0'g3<='0'g4<='1' fb0<=di;end if;end process;end bhv;时钟程序u3:library ieee;use ieee.std_logic_1164.all;entity sz isgeneric (v:integer:=8);port(clki:in std_logic; clko:buffer std_logic);end sz;architecture bhv of sz isbegin process(clki)variable count:integer range 0 to v;beginif(clki'event and clki='1')then count:=count+1; if(count=v)then clko<=not clko; count:=0; end if;end if;end process;end bhv;计数程序u4:library ieee;use ieee.std_logic_1164.all;entity js isport(fb,clk:in std_logic; g5:out std_logic; q:out integer range 0 to 10000);end js;architecture bhv of js isbeginprocess(fb,clk) variable n:integer range 0 to 10000; variable m:integer range 0 to 10000;beginif(clk'stable)then if(fb'event and fb='1')then n:=n+1; m:=n; if(n>9999 or n=0)then g5<='1' q<=0; end if; end if; end if; if(clk='0')then q<=m; n:=0; g5<='0'end if;end process;end bhv;BCD转换u5:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_signed.all;use ieee.std_logic_arith.all;entity bcd isport(qi:in integer range 0 to 10000; rst:in std_logic; d1,d2,d3,d4:buffer std_logic_vector(3 downto 0);end bcd;architecture bhv of bcd isbeginprocess(qi)constant a:integer:=1000;constant b:integer:=100;constant c:integer:=10;variable x1,x2,x3,x4,y,z:integer range 0 to 1000;beginif(rst='1')thenx1:=0;x2:=0;x3:=0;x4:=0;else x1:=qi/a;y:=qi-x1*1000;x2:=y/b;z:=y-x2*100;x3:=z/c;x4:=z-x3*10;end if;d1<=conv_std_logic_vector(x1,4);d2<=conv_std_logic_vector(x2,4);d3<=conv_std_logic_vector(x3,4);d4<=conv_std_logic_vector(x4,4);end process;end bhv;

    注意事项

    本文(VHDL课程设计.doc)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开