《EDA技术及应用》课后题解_第1页
《EDA技术及应用》课后题解_第2页
《EDA技术及应用》课后题解_第3页
《EDA技术及应用》课后题解_第4页
《EDA技术及应用》课后题解_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

单元一EDA技术概述

1.什么是EDA技术?EDA技术的基本特征是什么?

答:EDA(ElectronicDesignAutomation,电子设计自动化)

技术是电子设计工程师在计算机上完成电路的功能设计、逻辑设计、

性能分析、时序测试直至PCB(印制电路板)的自动设计等。

EDA技术的基本特征是采用高级语言描述,具有系统级仿真和综

合能力。

2.可编程逻辑器件有什么特点?有哪些可编程资源?

答:可编程逻辑器件的主要特点

1.缩短研制周期

2.降低设计成本

3.提高设计灵活性

3.写出Altera器件中的下列英文缩写的中文含义。

LELABPIAEAB

答:LE:逻辑单元

LAB:逻辑阵列块

PIA:可编程连线阵列

EAB:嵌入式阵列块

4.简述可编程逻辑器件的发展趋势。

答:可编程逻辑器件未来的发展将呈现以下几个方面的趋势:

1)向高密度、大规模的方向发展

2)向系统内可重构的方向发展

3)向低电压、低功耗的方向发展

4)向高速可预测延时器件的方向发展

5)向混合可编程技术方向发展

单元二可编程逻辑器件的设计与开发

1.简述可编程逻辑器件的一般设计过程。

答:CPLD/FPGA器件的设计流程一般分为设计输入、设计实现、

设计校验和编程下载4个步骤。

2.试比较可编程逻辑器件设计的常用输入方式。

答:1)原理图输入

原理图是图形化的表达方式,它是利用软件中所提供的元件符号

和连线来描述设计。其特点是比较直观,便于进行接口设计和引脚锁

定,容易实现仿真,便于信号的观察和电路的调整,系统运行速率较

高,但当描述复杂电路时则比较烦琐。

2)硬件描述语言输入

硬件描述语言输入是采用文本方式描述设计,这种方式的描述范

围较宽,从简单的门电路到复杂的数字系统均可描述。特别是在描述

复杂设计时,非常简洁。但这种描述方式不适合描述接口和连接关系,

并且该输入方式必须依赖综合器,只有好的综合器才能把语言综合成

优化的电路。

3.列举常用的EDA工具软件,并比较各有什么特点。

答:1)SynpIify

该软件是由SynpIicity公司专为FPGA和CPLD开发设计的逻辑

综合工具。它在综合优化方面的优点非常突出,得到了广大用户的好

评。它支持用Verilog和VHDL硬件描述语言描述的系统级设计,具

有强大的行为及综合能力。综合后,能生成Verilog或VHDL网表,

以进行功能级仿真。

Synplify的综合过程分为三步:首先是语言综合,将硬件描述

语言的设计编译成结构单元。接下来采用优化算法对设计进行优化,

除去冗余项,提高可靠性与速度。第三步是工艺映射,将设计映射为

相应PLD的网表文件。

2)Synopsys

该软件是另一种系统综合软件,它因综合功能强大而被广泛使

用。Synopsys综合器的综合效果比较理想,系统速度快,消耗资源

少。对系统的优化过程大致分为两步:第一步是设计规则,提出必须

满足的设计要求,如最大延时、最大功耗、最大扇出数目、驱动强度

等;第二步是提出各种设计约束,一般有反应时间约束、芯片面积约

束等。综合器根据设计要求,采用相应算法,力争使综合效果达到最

佳。

Synopsys支持完整的VHDL和VeriIog语言子集,另外它的元件

库中包含许多现成的实现方案,调用非常方便。正是因为这些突出的

优点,Synopsys逐渐成为设计人员普遍接受的标准工具。

3)ispDesignEXPERT

该软件是Lattice公司专为本公司的PLD芯片开发设计的软件,

它的前身是该公司的Synari。、ispEXPERT。ispDesignEXPERT是完备

的EDA软件,支持系统开发的全过程,包括设计输入、设计实现、仿

真与时序分析、编程下载等。

ispDesignEXPERT包括三个版本。Starter版适合初学者学习,

可以免费下载。Base版为试用版。它们的设计规模都低于600个宏

单元。Advanced版是专业设计版,支持该公司的各种系列器件,功

能全面。

4)MAX+plusll

该软件是Altera公司专为本公司的PLD芯片开发设计的软件。

其功能齐全,使用方便,易懂好学,是最广为接受的EDA工具之一。

5)QuartusII

该软件也是Altera公司为本公司的PLD芯片开发设计的软件。

它比MAX+pIusII支持的器件更全面,特另包括Altera公司的超高密

度的芯片系列——APEX系列器件。QuartusII可开发的单器件门数达

到了260万门,特别适合高集成的大型系统的开发设计。本书介绍的

设计就是采用的该软件。

4.EDA开发工具在“设计实现”过程中主要完成哪些工作?

答:EDA开发工具进行设计实现时主要完成以下4个相关任务。

1)优化和合并

优化是指进行逻辑化简,把逻辑描述转变为最适合在器件中实现

的形式;合并是将模块化设计产生的多个文件合并成一个网表文件,

并使层次设计平面化。

2)映射

映射是根据所选择的PLD型号,把设计分割为多个适合器件内部

逻辑资源实现的逻辑小块形式。

3)布局和布线

布局是将已分割的逻辑小块放到器件内部逻辑资源的具体位置,

并使它们易于连线,且连线最少;布线是利用器件内的布线资源完成

各功能块之间和反馈信号的连接。

4)产生编程文件

设计实现的最后一步是产生可供器件编程使用的数据文件。对

CPLD而言,产生的是熔丝图文件(*.JEDEC);对FPGA器件,则产生

位数据流文件Bitstream。

5.简述QuartusII进行EDA设计的一般步骤。

答:

1.为本项工程设计建立文件夹

2.建立工程

3.添加设计文件并保存

4.检查设计

5.锁定引脚并编译

6.功能仿真

7.下载

单元三硬件描述语言

1.VHDL与VeriIlogHDL各有何特点?试比较各自的应用场合。

答:一般的硬件描述语言可在三个层次上进行电路描述,其层次

由高到低依次可分为行为级、RTL级和门电路级。VHDL通常更适合行

为级和RTL级的描述;VerilogHDL通常只适合RTL级和门电路级的

描述。因此,与VerilogHDL相比,VHDL是一种高级描述语言,适用

于电路的高级建模,最适合描述电路的行为,即描述电路的功能,但

它几乎不能直接控制门电路,即控制电路的资源;VerilogHDL则是

一种低级的描述语言,最适合于描述门级电路,易于控制电路资源。

VHDL和VerilogHDL主要区别在于逻辑表达的描述级别。VHDL虽

然也可以直接描述门电路,但这方面的能力却不如VerilogHDL;相

反,VerilogHDL在高级建模描述方面不如VHDL。VeriIogHDL的描述

风格接近于电路原理图,从某种意义上说,它是电路原理图的高级文

本表7r方式。

2.VHDL程序有哪些基本的部分?各部分起什么作用?

答:VHDL程序可以分为两部分。第一部分主要用于描述电路的

“外部端口”,包括器件名称、端口的名称、数据类型等,称为“实

体说明”;第二部分主要用于描述电路的内部结构、功能及其实现的

算法,称为“结构体”。

3.BIT数据类型和STD_L0GIC数据类型有何区别?

答:BIT是二进制位类型,其取值是一个1位的二进制数,只能

是。或1。

STD_L0GIC是工业标准逻辑类型,取值有0、1、Z(高阻)、X(未

知)等9种,该数据类型由IEEE库中的STD_L0GIC_1164程序包定义。

4.端口模式BUFFER与INOUT有何区别?

答:INOUT是双向端口,既可以输入信号,也可以输出信号;而

BUFFER也可以输出实体信号到外部,但作为输入时,信号不是由外

部输入,而是在实体内由输出信号反馈得到,即BUFFER模式的端口

在信号输出实体的同时,也可以被实体本身读入。

5.什么是库和程序包?常用的库和程序包有哪些?

答:在利用VHDL进行工程设计时,为了提高设计效率以及使设

计遵循某些统一的语言标准或数据格式,有必要将一些有用的信息汇

集在一个或几个库(LIBRARY)中,以供VHDL调用。常用的库有IEEE

库、STD库和WORK库。

6.什么是并行语句?什么是顺序语句?二者有何区别?

答:在VHDL中,并行语句有多种语句格式,各种并行语句在结

构体中的执行都是同步进行的,或者说是并行运行的,其执行的方式

与书写的顺序无关。这种并行性是由硬件本身的并行性决定的,即一

旦电路接通电源,它的各部分就会按照事先设计好的方案同时工作。

并行语句在执行时,各并行语句之间可以有信息来往,也可以互为独

立、互不相关。另外,每一并行语句内部的语句可以有两种不同的运

行方式,即并行执行方式(如块语句)和顺序执行方式(如进程语句)。

顺序语句主要指的是语句的执行(指仿真执行)顺序与其书写顺

序基本一致。但应注意的是,这里的顺序是对仿真软件的运行或顺应

VHDL语法的编程思路而言的,其相应的硬件逻辑工作方式未必如此。

顺序语句只能出现在进程(PROCESS)中,而进程本身属于并行

语句,这就是说在同一设计实体中,所有的进程都是并行执行的,而

每一个进程内部的语句是顺序执行的。

常用的顺序语句有赋值语句、IF语句、CASE语句、LOOP语句和

NULL语句。

7.信号和变量有何区别?

答:(1)信号是全局量,是一个实体内部各部分之间进行通信的

手段;而变量是局部量,只允许定义并作用于进程和子程序中。当欲

把变量值带出进程时,变量须首先赋给信号,然后由信号将其值带出。

(2)信号的赋值采用符号“<二",而变量的赋值符号为“:二”。

(3)通常,变量的值可以传递给信号,而信号的值却不能传递给

变量。

(4)在进程中,变量的赋值语句一旦被执行,变量值立刻就被赋

予新值,在执行下一条语句时,该变量就用新赋的值参与运算;而在

进程中的信号赋值语句,该语句虽然已被执行,但新的信号值并没有

被立即代入,因而在执行下一条语句时,仍使用原来的信号值,直到

进程结束时,信号才根据最后一次的赋值被赋予新值。

(5)在结构体的并行语句部分,若同一信号被赋值一次以上,则

编译器将给出错误报告,指出该信号出现了两个驱动源。在进程中,

若同一信号被赋值一次以上,则编译器将给出警告,指出只有最后一

次赋值有效,而变量的赋值是立即发生的。

8.IF语句和CASE语句的使用效果有何不同?

答:与IF语句相比,CASE语句组的程序可读性比较好,这是因

为它把条件中“表达式”的所有取值都列了出来,可执行条件一目了

然。但对相同的逻辑功能描述,综合后,用CASE语句描述比IF描述

耗用更多的硬件资源。因此,对本身就具有优先逻辑关系的描述(如

优先编码器),采用IF语句比CASE语句更合适。

9.画出与下例实体描述相对应的原理图符号。

(1)实体一

ENTITYbuf3sIS

PORT(input:INSTD_LOGIC;

enable:INSTD_LOGIC;

output:OUTSTD_LOGIC);

ENDbuf3s;

BUF3s

INPUTX-INPUTOUTPUT-XOUTPUT

ENRBLEX-ENABLE

(2)实体二

ENTITYmux21IS

PORT(inO,in1,sel:INSTD_LOGIC;

output:OUTSTD_LOGIC);

ENDmux21;

Muxei

XNOX-INO

INXX—IHXOUTPUT-XOUTPUT

SELASEL

10.修改下列程序中的错误。

ENTITYcountIS

PORT(elk:INBIT;

q:OUTBIT_VECTOR(7DOWNTO0););

ENDcount;

ARCHITECTUREaOFcount

BEGIN

PROCESS(elk)

IFelk'eventANDclk='1'THEN

q〈=q+1;

ENDPROCESS;

ENDa;

正确的:

ENTITYcountIS

PORT(clk:INBIT;

q:OUTBIT_VECTOR(7DOWNTO0));

ENDcount;

ARCHITECTUREaOFcount

BEGIN

PROCESS(elk)

IFclk,eventANDclk='1'THEN

q<=q+1;

ENDPROCESS;

ENDa;

11.修改下列语句中的错误。

SIGNALinvalue:ININTEGERRANGE0TO15;

SIGNALoutvalue:OUTSTD_LOGIC;

CASEinvaIueIS

WHEN0=>outvalued'1';

WHEN1=>outvalue<='O';

ENDCASE;

正确的:....

SIGNALinvalue:ININTEGERRANGE0TO15;

SIGNALoutvalue:OUTSTD_LOGIC;

CASEinvaIueIS

WHEN0=>outvalue*'1

WHENothers=>outvaIue<='O';

ENDCASE;

12.图3-25是一个含有上升沿触发D触发器的时序电路,试写出

此电路的VHDL程序。

答:1、与非门

Iibraryieee;

useieee.std_Iogic_1164.aII;

entitynandsis

port(a,b:instd_logic;

q:outstd_logic);

endnands;

architectureaofnandsis

begin

q<=not(aandb);

enda;

2、触发器

Iibraryieee;

useieee.std_Iogic_1164.aII;

entityd1is

port(d,cIk:instd_logic;

q:outstd_logic);

endd1;

architectureaofd1is

begin

Process(cIk)

begin

ifelk'eventandcIk='1'then

q<=d;

endif;

endprocess;

enda;

3、非门

Iibraryieee;

useieee.std_Iogic_1164.aII;

entitynotsis

port(a:instd_logic;

q:outstd_logic);

endnots;

architectureaofnotsis

begin

q<=nota;

enda;

4、时序电路

Iibraryieee;

useieee.std_Iogic_1164.aII;

entityd2is

port(cI,cIk:instd_logic;

out1:outstd_logic);

endd2;

architectureaofd2is

componentnands

port(a,b:instd_logic;

q:outstd_logic);

endcomponent;

componentd1

port(d,cIk:instd_logic;

q:outstd_logic);

endcomponent;

componentnots

port(a:instd_logic;

q:outstd_logic);

endcomponent;

signaItempi,temp2:std_logic;

begin

u1:nandsportmap(temp2,cI,tempi);

u2:d1portmap(tempi,cIk,temp2);

u3:notsportmap(temp2,out1);

enda;

单元四常用数字电路的设计

1.试设计一个将芯片内的两个节点a和b相接的VHDL程序。

Iibraryieee;

useieee.std_Iogic_1164.aII;

entityt1is

port(a:instd_logic;

b:outstd_logic);

endt1;

architectureaoft1is

begin

b<=a;

enda;

2.试设计一个4位并行奇校验电路,设输出为p。当各输入信号

同时输入的逻辑'1'的个数为奇数时,输出p=1,否则p=0。

Iibraryieee;

useieee.std_Iogic_1164.aII;

entityt2is

port(a:instd_Iogic_vector(3downto0);

p:outstd_logic);

endt2;

architectureaoft2is

begin

process(a)

begin

ifa="0001"ora="0010"ora="0100"ora="1000"

ora="0111"ora="1011"ora="1101"ora="1110"

then

P<='「;

eIse

P<=T;

endif;

endprocess;

enda;

3.设计一个8位数补码生成电路,设输入为d[7.,O],输出为

p[7..0]o

Iibraryieee;

useieee.std_Iogic_1164.all;

useieee.std_Iogic_unsigned.all;

entityt3is

port(d:instd_Iogic_vector(7downto0);

p:outstd_Iogic_vector(7downto0));

endt3;

architectureaoft3is

begin

p<二(notD)+1;

enda;

4.试设计一个5人表决器。(提示:设置5个输入,1个输出。

输入变量为'1'时表示表决者赞同,反之表示反对。输出变量为'1'

时表示表决通过,通过的条件是5人中至少有3人同意。)

Iibraryieee;

useieee.std_Iogic_1164.aII;

entityt4is

port(a,b,c,d,e:instd_logic;

y:outstd_logic);

endt4;

architectureaoft4is

begin

y<二(aandbandc)or(aandcandd)or(aanddande)or

(bandcandd)or(banddande)or(canddande)or

(dandaandb)or(eandbandc);

enda;

5.试用VHDL描述芯片74LS138(3-8线译码器)的功能。74LS138

的功能见表472,s1、s2、s3为使能端,a2、a1、aO为地址选择端,

y[0..7]为输出端。

表47274LS138功能表

输入输出

s1s1+s2a2a1aOy[0..7]

0XXXX11111111

X1XXX11111111

1000001111111

1000110111111

1001011011111

1001111101111

1010011110111

1010111111011

1011011111101

1011111111110

LIBRARYIEEE;

USEIEEE.STD_L0GIC_1164.ALL;

ENTITYdecoder3_8IS

PORT(s1,s2,s3:inbit;

a:INBIT_VECTOR(2DOWNTO0);

y:OUTBIT_VECTOR(7DOWNTO0));

ENDdecoder3_8;

ARCHITECTUREbehOFdecoder3_8IS

BEGIN

process(s1,s2,s3)

begin

ifs1='O'then

y<="111111H";

eIsifs1='1'ors2='1'then

y<="111111H";

eIse

caseais

WHEN"000"=>y<="11111110";

WHEN"00r,=>y<="1111110r,;

WHEN"010"=>y<="11111011";

WHEN"0H"=>y<="111101H";

WHEN"100"=>y<="11101111";

WHEN"10r,=>y<="110111H";

WHEN"110"=>y<="10111111";

WHEN"1H"=>y<="011111H";

endcase;

endif;

endprocess;

ENDbeh;

6.试设计一个4位组合移位器,功能见表4-13,d[3..0]为输入,

控制位为kz[1..0],输出为

表4-134位组合移位器功能表

控制位kz[1..0]输出f[3..0]功能

00d3d2d1d0不移位

01d2d1d0d3循环左移1位

10d1d0d3d2循环左移2位

11dOd3d2dl循环左移3位

Iibraryieee;

useieee.std_Iogic_1164.aII;

entityt6is

port(d:instd_Iogic_vector(3downto0);

KZ:instd_Iogic_vector(1downto0);

f:outstd_Iogic_vector(3downto0));

endt6;

architectureaoft6is

signaIq:std_Iogic_vector(3downto0);

begin

process(KZ)

begin

ifKZ="01"then

q(3downto1)<=d(2downto0);

q(0)<=d(3);

elsifKZ="10"then

q(3downto2)<=d(1downto0);

q(1)<=d(3);

q(O)〈=d(2);

elsifKZ="11"then

q(3)<=d(0);

q(0)<=d(1);

q(1)<=d(2);

q⑵<=d(3);

eIse

q<=d;

endif;

endprocess;

f〈二q;

enda;

7.试设计一个6位加法器,用于实现对两个6位数的加法运算,

其功能见表474。

表4746位加法器功能表

输入输出

a[5..0]b[5..0]s[5..0]c

aba+b进位

Iibraryieee;

useieee.std_Iogic_1164.aII;

useieee.std_logic_unsigned.all;

entityt7is

port(a,b:instd_Iogic_vector(5downto0);

s:outstd_Iogic_vector(5downto0);

c:outstd_logic);

endt7;

architectureaoft7is

signaIm:std_logic_vector(6downto0);

begin

m<=a+('0'&b);

s<=m(5downto0);

c<=m(6);

enda;

8.设计一个具有异步置位/复位功能的JK触发器。功能见表

4-15o

表4T4JK触发器功能表

输入输出

enaprnclrcIkJKqqb

101XXX10

110XXX01

100XXXXX

111T00不变不变

111T0101

111t1010

111T11翻转翻转

Iibraryieee;

useieee.std_Iogic_1164.aII;

entityt8is

port(ena,prn,cIr,cIk,j,k:instd_logic;

q,qb:outstd_logic);

endt8;

architectureaoft8is

signaIm,mb:std_logic;

begin

process(ena,prn,cIr,cIk)

begin

ifprn='O'then

m<=T;

mb<='0';

eIsifcIr=,O'then

m<='O';

mb<='「;

eIsifelk'eventandcIk='1'then

m<二(jand(notm))or((notk)andm);

mb<=notm;

endif;

endprocess;

q<=m;

qb<=mb;

enda;

9.设计一个RS触发器,功能见表4-15。

表475RS触发器功能表

输入输出

RSQ

00不变

011

100

11不定

Iibraryieee;

useieee.std_Iogic_1164.aII;

entityt9is

port(cIk,R,s:instd_logic;

q:outstd_logic);

endt9;

architectureaoft9is

signaIm:std_logic;

begin

process(cIk)

begin

ifelk'eventandcIk='1'then

ifr='O'ands='0'then

m<=m;

eIsifr='O'ands='1'then

m<=T;

eIsifr='1'ands='O'then

m<='0';

elseNULL;

endif;

endif;

endprocess;

q<=m;

enda;

10.试设计一个4位二进制数的可逆计数器,时钟端为elk,计

数输出端为q[3..O],计数方向控制端为dire。当dire=1时做加法

计数,当dire=0时做减法计数。

Iibraryieee;

useieee.std_Iogic_1164.aII;

useieee.std_Iogic_unsigned.all;

entityt10is

port(cIk,dire:instd_logic;

q:outstd_Iogic_vector(3downto0));

endt10;

architectureaoft10is

signaIm:std_logic_vector(3downto0);

begin

process(cIk,dire)

begin

ifelk'eventandcIk='1'then

ifdire='1"then

m<=m+1;

eIse

m<=m-1;

endif;

endif;

endprocess;

q<=m;

enda;

11.用VHDL描述同步十进制加法计数器芯片74LS160的功能,时

钟端为elk,清零端为clr,预置数输入端为d[3..0],预置数控制

端为Id,功能控制端为ep和et,计数输出端为q[3..O],进位输出

端为c。74LS160功能见表4-16。

表47674LS160功能表

cIkclrIdepet工作状态

X0XXX置零

T10XX预置数

X1101保持

X11X0保持(c=0)

X1111计数

Iibraryieee;

useieee.std_Iogic_1164.aII;

useieee.std_logic_unsigned.all;

entityt11is

port(cIk,cIr,Id,ep,et:instd_logic;

d:instd_Iogic_vector(3downto0);

q:outstd_Iogic_vector(3downto0);

c:outstd_logic);

endt11;

architectureaoft11is

signaIm:std_logic_vector(3downto0);

begin

process(cIr,cIk)

begin

ifcIr='O'then

m<="0000";

eIsifelk'eventandcIk='1'then

ifld='O'then

m<=d;

eIsifep='1'andet='1'then

m<=m+1;

eIsifep='O'andet='1'then

m<=m;

eIsifet='O'then

m<=m;

c<='0';

endif;

endif;

endprocess;

q<=m;

enda;

12.试设计一个60进制的同步加法计数器,时钟端为elk,计数

输出端为q。

Iibraryieee;

useieee.std_Iogic_1164.aII;

useieee.std_Iogic_unsigned.all;

entityt12is

port(elk:instd_logic;

q:outstd_Iogic_vector(5downto0));

endt12;

architectureaoft12is

signaIm:std_logic_vector(5downto0);

begin

process(cIk)

begin

ifelk'eventandcIk='1'then

ifrTF"1110U"then

m<="000000";

eIse

m<=m+1;

endif;

endif;

endprocess;

q〈二m;

enda;

13.试设计一个128进制的同步加法计数器,时钟端为elk,计

数输出端为q0

Iibraryieee;

useieee.std_Iogic_1164.aII;

useieee.std_Iogic_unsigned.all;

entityt13is

port(elk:instd_logic;

q2,q1,qO:outstd_Iogic_vector(3downto0));

endt13;

architectureaoft13is

signaIb,s,g:std_Iogic_vector(3downto0);

begin

process(cIk)

begin

ifelk'eventandcIk='1'then

ifb>"0000"then

ifs>"0001"then

ifg>"0111"then

g<="0000";

b<="0000";

s<="0000";

eIse

g<=g+1;

endif;

eIse

ifg="1001"then

s<=s+1;

g<="0000";

eIse

s<=S;

g〈=g+1;

endif;

endif;

eIse

ifs="1001"then

b<=b+1;

s<="0000";

eIse

ifg="1001"then

s<=s+1;

g<="0000";

else

s<=S;

g<=g+1;

endif;

endif;

endif;

endif;

endprocess;

q2<=b;qK=s;qO<=g;

enda;

单元五数字系统设计实例

1.设计一个8X8发光点矩阵逐点扫描显示控制电路,要求如下。

(1)光点从屏左上角像素点向右开始逐点逐行扫描,终止于右下

角像素点,然后重复上述过程;

(2)扫描一帧所需时间为13so

Iibraryieee;

useieee.std_Iogic_1164.aII;

useieee.std_logic_unsigned.all;

entitydzis

port(elk:instd_logic;

row,lie:outstd_Iogic_vector(7downto0));

enddz;

architectureaofdzis

signaIcountr,countI:std_Iogic_vector(2downto0);

signaIc:std_logic;

begin

p1:process(cIk)

begin

ifelk'eventandcIk='1'then

ifcountl="111"then

c<=T;

countI<="000";

eIse

c<='0';

countI<=countI+1;

endif;

endif;

endprocessp1;

p2:process(c)

begin

ifc'eventandc='1'then

countr<=countr+1;

endif;

endprocessp2;

p3:process(countI,countr)

begin

casecountris

when"000"=>row<="01111111";一第一行显示

ifcountl="000"then

Iie<="10000000";一第一歹“

eIsifcountI="001"then

Iie<="01000000";一第二列

eIsifcountl="010"then

Iie<="00100000";

eIsifcountI="011"then

Iie<="00010000";

eIsifcountI="100"then

Iie<="00001000";

eIsifcountI="101"then

Iie<="00000100";

eIsifcountI="110"then

Iie<="00000010";

eIsifcountI="111"then

Iie<="00000001";

endif;

when"001"=>row<="10111111";一第二行显示

ifcountl="OOO"then

Iie<="10000000";

eIsifcountI="001"then

Iie<="01000000";

eIsifcountl="010"then

Iie<="00100000";

eIsifcountI="011"then

Iie<="00010000";

eIsifcountl="100"then

Iie<="00001000";

eIsifcountI="101"then

Iie<="00000100";

elsifcountl="110"then

Iie<="00000010";

elsifcountI="111"then

Iie<="00000001";

endif;

when"010"=>row<="11011111";

ifcountl="000"then

Iie<="10000000";

elsifcountI="001"then

Iie<="01000000";

eIsifcountI="010"then

Iie<="00100000";

eIsifcountI="011"then

Iie<="00010000";

eIsifcountl="100"then

Iie<="00001000";

eIsifcountI="101"then

Iie<="00000100";

eIsifcountl="110"then

Iie<="00000010";

eIsifcountI="111"then

Iie<="00000001";

endif;

when"0H"=>row<="11101111";

ifcountI="000"then

Iie<="10000000";

eIsifcountI="001"then

Iie<="01000000";

eIsifcountl="010"then

Iie<="00100000";

eIsifcountI="011"then

Iie<="00010000";

eIsifcountl="100"then

Iie<="00001000";

eIsifcountl="101"then

Iie<="00000100";

eIsifcountl="110"then

Iie<="00000010";

eIsifcountI="111"then

Iie<="00000001";

endif;

when"100"=>row<="11110111";

ifcountl="000"then

Iie<="10000000";

eIsifcountI="001"then

Iie<="01000000";

eIsifcountl="010"then

Iie<="00100000";

eIsifcountI="011"then

Iie<="00010000":

eIsifcountl="100"then

Iie<="00001000";

eIsifcountl="101"then

Iie<="00000100";

eIsifcountI="110"then

Iie<="00000010";

eIsifcountl="111"then

Iie<="00000001";

endif;

when"10r,=>row<="11111011";

ifcountl="000"then

Iie<="10000000";

eIsifcountI="001"then

Iie<="01000000";

eIsifcountI="010"then

Iie<="00100000";

eIsifcountI="011"then

Iie<="00010000";

eIsifcountl="100"then

Iie<="00001000";

eIsifcountI="101"then

Iie<="00000100";

eIsifcountl="110"then

Iie<="00000010";

eIsifcountl="111"then

Iie<="00000001";

endif;

when"110"=>row<="11111101";

ifcountl="000"then

Iie<="10000000";

eIsifcountI="001"then

Iie<="01000000";

eIsifcountI="010"then

Iie<="00100000";

eIsifcountI="011"then

Iie<="00010000";

eIsifcountl="100"then

Iie<="00001000";

eIsifcountI="101"then

Iie<="00000100";

eIsifcountI="110"then

Iie<="00000010";

eIsifcountl="111"then

Iie<="00000001";

endif;

whenothers=>row<="11111110";

ifcountl="000"then

温馨提示

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

评论

0/150

提交评论