西电EDA满分大作业

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1EDA报告题目VHDL设计初步学院电子工程学院专业学号导师姓名朱燕2目录第一章实验部分(流水灯).........................................................................................................31、程序设计:.........................................................................................................................32、程序代码..............................................................................................错误!未定义书签。3、程序调试..............................................................................................错误!未定义书签。第二章习题部分..............................................................................................错误!未定义书签。习题一........................................................................................................错误!未定义书签。习题二........................................................................................................错误!未定义书签。习题三........................................................................................................错误!未定义书签。习题四........................................................................................................错误!未定义书签。习题五........................................................................................................错误!未定义书签。习题六........................................................................................................错误!未定义书签。习题七........................................................................................................错误!未定义书签。引言随着大规模集成电路技术和计算机技术的不断发展,在涉及通信、国防、航天、医学、工业自动化、计算机应用、仪器仪表等领域的电子系统设计工作中,EDA技术的含量正以惊人的速度上升;电子类的高新技术项目的开发也逾益依赖于EDA技术的应用。即使是普通的电子产品的开发,EDA技术常常使一些原来的技术瓶颈得以轻松突破,从而使产品的开发周期大为缩短、性能价格比大幅提高。不言而喻,EDA技术将迅速成为电子设计领域中的极其重要的组成部分。3第一章实验部分(流水灯)1、程序设计流程图:开始4M的分频器输出1HZ模8的计数器输出计数电平38译码器依次输出低电平8个二极管灯依次点亮结束42、模块说明第一部分:分频器因为主板是cyclong-EP16C6Q240C8的主频是4M赫兹,如果直接当做CLK信号,根本无法看清流水灯的变化,所以需要做分频操作。仿照数电课本的例题中的分频器。分频器的实体:entitydevideisport(clk:instd_logic;clk_out:outstd_logic);enddevide;我们可以从程序中看到,输入时clk(外部主频时钟),输出是clk_out(分频后的时钟)。(这是实体的器件图)分频器的结构体:process;用进程语言描述beginwaituntilclk'eventandclk='1'if(count3999999)thencount=count+1;clk_out='0';else5count=(others='0');clk_out='1';我们可以从程序中看到waituntilclk'eventandclk='1'这句是时钟来到意思,当count计数小于3999999时,count自加1,且输出为零,只有当大于3999999时,产生一个高电平脉冲。接下来是对分频器的波形仿真:从波形中我们可以看到分频器的工作.第二部分:模8计数器我们需要一个计数器来输出计数电频,作为下一步38译码器的输入信号,首先我们来看这个器件的实体:port(clk:instd_logic;dout:outstd_logic_vector(2downto0));(这是器件的实体图)输入端口是clk,是接入分频器的时钟信号,输出就是计数电平了。计数器的结构体:architecturearc_mofmissignalcount:std_logic_vector(2downto0);beginprocess(clk)begin6ifrising_edge(clk)thenifcount7thencount=count+1;elsifcount=7thencount=000;endif;endif;a=count(0);b=count(1);c=count(2);endprocess;以上是模8计数器的结构体,我们可以看到,但时钟来到时,在count小于7时count加一,当count=7时,count清零。接下来是对计数器波形的仿真:dout输出000,001,010,011,100,101,110,111,000,001…这符合我们的要求。第三部分:38译码器因为我们使用是共阴极二极管,38译码器每接受一个来自计数器的点平时,对应的Yn就输出低电平,点亮此二极管。我们就可以看到二极管依次点亮好似流水一般。译码器的实体:port(a,b,c:instd_logic;y:outstd_logic_vector(7downto0));输入是a,b,c从低到高的三个,输出是y对应的译码电平。7(这是译码器的原件图)译码器的结构体:architecturearc_yima38ofyima38issignalcomb:std_logic_vector(2downto0);begincomb=x;process(comb)begincasecombiswhen000=y=11111110;when001=y=11111101;when010=y=11111011;when011=y=11110111;when100=y=11101111;when101=y=11011111;when110=y=10111111;when111=y=01111111;whenothers=y=null;endcase;endprocess;我们可以看到如下的波形:在y的输出波形中,“0”循环右移,这是我们想要的结果。8第四部分:总体效果3、遇到的问题和解决方法我使用的是原理图连接,在下到片子后我编译失败,经过同学和我的检查,终于发现我的原理图连接有问题,如上图所示,我将y[2..0]连接到译码器的输入端(a,b,c),这是不正确的,因为y[2..0]是(vector)矢量,而(a,b,c)是位,我错误的以为用线连起来就可以使用,但事实是矢量必须配对矢量,位配对位。9第二章习题部分(Ex-1)画出下例实体描述对应的原理图符号元件:ENTITYbuf3sIS--实体1:三态缓冲器PORT(input:INSTD_LOGIC;--输入端enable:INSTD_LOGIC;--使能端output:OUTSTD_LOGIC);--输出端ENDbuf3x;答:ENTITYmux21IS--实体2:2选1多路选择器PORT(in0,in1,sel:INSTD_LOGIC;output:OUTSTD_LOGIC);ENDENTITYmux21;(Ex-2)图中所示的是4选1多路选择器,试分别用IF_THEN语句和CASE语句的表达方式写出此电路的VHDL程序。(选择控制的信号s1和s0为STD_LOGIC_VECTOR类型;当s1='0',s0='0';s1='0',s0='1';s1='1',s0='0'和s1='1',s0='1'分别执行y=a、y=b、y=c、y=d。)10答:首先为用IFTHEN语句实现程序如下:libraryIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;entitymux41isport(a,b,c,d:instd_logic;s1,s0:instd_logic_vector(1downto0);y:outstd_logic);endentitymux41;architectureoneofmux41isbeginprocess(a,b,c,d,s1,s0)beginifs1='0'ands0='0'theny=a;elseifs1='0'ands0='1'theny=b;elseifs1='1'ands0='0'theny=c;elseifs1='1'ands0='1'theny=d;endif;endprocess;endarchitectureone;用case语句程序如下:libraryIEEE;11USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;entitymux41isport(a,b,c,d:instd_logic;s1,s0:instd_logic;--这里s1s0没有定义成2位矢量y:outstd_logic);endentitymux41;architectureoneofmux41issignall1:std_logic_vector(1downto0);--中间信号为两位矢量,为了使用&beginprocess(a,b,c,d,s1,s0)beginl1=s1&s0;casel1iswhen00=y=a;when01=y=b;when10=y=c;when11=y=d;endcase;endprocess;endarchitectureone;(Ex-3)图中所示的是双2选1多路选择器构成的电路MUXK,对于其中MUX21A,当s='0'和'1'时,分别有y='a'和y='b'。试在一个结构体中用两个进程来表达此电路,每个进程中用CASE语句描述一个2选1多路选择器MUX21A。libraryieee;useieee.std_logic_1164.all;entitymuxkis12port(a1,a2,a3:instd_logic;--待选择变量temp:bufferstd_logic;--中间信号s1,s0:instd_logic;--控制端output:outstd_logic);--输出结果endmuxk;architecturepr1ofmuxkisbe

1 / 19
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功