数字电路EDA设计与应用期末总复习题综述_第1页
数字电路EDA设计与应用期末总复习题综述_第2页
数字电路EDA设计与应用期末总复习题综述_第3页
数字电路EDA设计与应用期末总复习题综述_第4页
数字电路EDA设计与应用期末总复习题综述_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

数字电路EDA设计与应用期末总复习题综述数字电路EDA设计与应用期末总复习题综述49/49数字电路EDA设计与应用期末总复习题综述考试时间:90分钟题型:一、单项选择2分*10=20分二、程序判断改错题5分*4=20分三、程序题20分*3=60分复习重点:1、EDA、VHDL的中英文名称。2、表记符规则,文法规则3、数据对象(重点常量、变量、信号)4、数据种类(标准预定义数据种类,IEEE预定义标准逻辑位种类)5、运算符(连接运算符,逻辑运算符等)6、VHDL程序的基本构造:完满的VHDL程序包括的五个部分,重点:实体,端口说明,构造体,进度,子程序(过程和函数);常用的库和程序包。7、序次语句,序次语句的特点,IF语句,CASE语句8、并行语句,条件信号赋值语句,选择信号赋值语句,COMPONENT语句,元件例化语句,9、程序设计题:加法器,译码器,数据选择器,计数器,分频器,数码管显示。一、填空题(20分,每空格1分)1、一个完满的VHDL语言程序平时包括实体(entity),构造体(architecture),配置(configuration),包会集(package)和库(library)5各部分。2、在一个实体的端口方向说明时,输入使用in表示,那么构造体内部不能够再使用的输出是用out表示;双向端口是用inout表示;构造体内部可再次使用的输出是用buffer表示;3、VHDL的客体,或称数据对象包括了常数、变量variable和信号signal。4、请列出三个VHDL语言的数据种类,如实数、位等。位矢量,字符,布尔量。5、VHDL程序的基本构造包括库、程序包、实体和构造体。6、more__11表记吻合法吗?不合法。8bit表记吻合法吗?不合法。variable表记吻合法吗?不合法。7、信号的代入平时用<=,变量用:=。8、表示‘0’‘1’;两值逻辑的数据种类是bit(位),表示‘0’‘1’‘Z’等九值逻辑的数据种类是std_logic(标准逻辑),表示空操作的数据种类是NULL。9、<=是小于等于关系运算符,又是赋值运算操作符。10、设D0为'1',D1为'0',D2为'1',D3为'0',D3&D2&D1&D0的运算结果是“0101”,D1&D2&D3&D4的运算结果是“1010”。11、VHDL程序的基本构造最少应包括实体、构造体两部分和对库

的引用声明。12、1_Digital

表记吻合法吗?

,\12@+\

呢?

合法

。13、在

VHDL的常用对象中,

信号

、变量

能够被多次赐予不相同的值,常量只幸亏定义时赋值。14、实体的端口模式用来说明数据、信号经过该端口的传输方向,端口模式有Out、inout、buffer15、VHDL语言中std_logic种类取值‘Z’表示高阻,取值

‘X’

in

、。表示不确定。16、位种类的初始化采用(字符

/字符串)

字符

、位矢量用

字符串

。17、进度必定位于

构造体

内部,变量必定定义于

进度/包/子程序

内部。18、并置运算符

&的功能是

把多个位或位向量合并为一个位向量

。19、进度执行的体系是敏感信号发生跳变。20、判断CLK信号上升沿到达的语句是ifclk’eventandclk=‘1’then.21、IF语句各条件间拥有不相同的优先级。22、VHDL可否区分大小写?不区分。23、digital__8表记吻合法吗?不合法。12_bit表记吻合法吗?不合法。signal表记吻合法吗?不合法。24、构造体有三种描述方式,分别是数据流、行为、和构造化。25、请分别列举一个常用的库和程序包libraryieee、use。26、一个信号处于高阻(三态)时的值在VHDL中描述为‘Z’。27、/=是不相等操作符,功能是在条件判断是判断操作符两端不相等。28、设D0为'0',D1为'1',D2为'1',D3为'0',D3&D2&D1&D0的运算结果是“0110”,(D3orD2)and(D1andnotD0)的运算结果是:‘1’。29、赋值语句是(并行/串行)并行执行的,if语句是(并行/串行)串行执行的。30、8digital表记吻合法吗?不合法。31、信号的代入平时用<=,变量用:=。32、标准逻辑(std_logic)是一个拥有九值逻辑的数据种类。33、定义一个变量a,数据种类为4位位向量variablea:bit_vector(3downto0)。34、<=是小于等于关系运算符,又是赋值运算操作符。35、设D0为'1',D1为'1',D2为'1',D3为'0',“1110”是D3&D2&D1&D0的运算结果。36、IF语句依照指定的条件来确定语句执行序次,共有3各种类:用于门闩控制的IF语句、用于二选一控制的IF语句、用于多项选择择控制的IF语句。二、判断对错并给出判断依照(20分,每题5分,判断对错2分,给出正确答案3分)1、传统的系统硬件设计方法是采用自上而下(topdown)的设计方法,利用硬件描述语言(HDL)的硬件电路设计方法采用自下而上(bottomup)的设计方法。(×)传统的系统硬件设计方法是采用自下而上(bottomup)的设计方法,利用硬件描述语言(HDL)的硬件电路设计方法采用自上而下(topdown)的设计方法2、VHDL能够采用层次化的设计,一个高层的构造体中能够调用低层的实体3、一个VHAL程序中仅能使用一个进度(process)语句。

((

√)×)能够使用多个进度语句。4、VHDL语言的估量操作包括了逻辑运算符、关系运算符、乘法运算符等,它们三者的优先级是相同的。(×)逻辑运算符<关系运算符<乘法运算5、进度语句中,无论在何时,process

语句后边必定列出敏感信号

(×)包括wait语句的进度语句可不列出敏感信号。6、VHDL语言与计算机C语言的没有差别。7、在构造体中定义一个全局变量(VARIABLES),能够在所有进度中使用。

(×)(×)“变量(

VARIABLES)”改为“信号”。8、CONSTANTT2

:std_logic<=0’;

(×)

改正:把

<=

换为

:=

。9、若某变量被定义为数值型变量,未赋初始值时默认值为‘(错)改正:把‘0’的单引号去掉。

0’。10、在构造体中定义一个全局变量(VARIABLES),能够在所有进度中使用。(错)改正:“变量(VARIABLES)”改为“信号”。libraryieee;useieee.std_logic_arith.all;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;以上库和程序包语句有无错误?有,有的话请在原程序相应地址改正。(2)entityromisport(addr:instd_logic_vector(0to3);ce:instd_logic;data:outstd_logic_vector(7downto0);)endrom;以上port语句有无错误?有,有的话请在原程序相应地址改正。(4)三、简答(20分,每题5分)1、简述VHDL程序的基本构造。库(1)libraryieee;程序包(2)useieeestd_logic_1164.all;实体(3)entity实体名is构造体(5)architecture构造体名of实体名is若答出配置也可加1分配置2、简述信号与变量的差别。信号延时赋值,变量马上赋值(2)信号的代入使用<=,变量的代入使用:=;(4)信号在实质的硬件中间有对应的连线,变量没有(5)3、进度语句是设计人员描述构造体时使用最为频频的语句,简述其特点。它能够与其他进度并发执行,并可存取构造体或实体中所定义的信号;进度构造中的所有语句都是按序次执行的;(2)为了启动进度,在进度构造中必定包括一个显式的敏感信号量表也许包括一个语句;(4)进度之间的通信是经过信号量的传达来实现的。(5)

(1)

wait四、编程题(共50分)1、请补全以下二选一VHDL程序(本题10分)Entitymuxisport(d0,d1,sel:inbit;q:outBIT);(2)endmux;architectureconnectofMUXis(4)signaltmp1,TMP2,tmp3:bit;(6)begincale:blockbegintmp1<=d0andsel;tmp2<=d1and(notsel)tmp3<=tmp1andtmp2;q<=tmp3;(8)endblockcale;endCONNECT;(10)2、用IF语句编写一个四选一电路,要求输入d0~d3,s为选择端,输出y。(本题10分)entityMUX4isport(s:instd_logic_vector(1downto0);d:instd_logic_vector(3downto0);y:outstd_logic);endMUX4;(3)architecturebehaveofMUX4isbeginprocess(s)beginif(s="00")theny<=d(0);(4)elsif(s="01")theny<=d(1);(5)elsif(s="10")theny<=d(2);(6)elsif(s="11")theny<=d(3);(7)elsenull;(9)endif;endprocess;endbehave;(10)《数字电路EDA设计》习题集第一章、EDA技术归纳一、填空题1、一般把EDA技术的发展分为CAD、CAE、EDA(ESDA)三个阶段。2、EDA设计流程包括设计准备、设计输入、设计办理、器件编程四个步骤。3、EDA的设计考据包括功能仿真、时序仿真、器件测试三个过程。4、EDA的设计输入包括文本输入、波形输入、图形输入。5、当前最流行的并成为IEEE标准的硬件描述语言包括VHDL和VerilogHDL。6、将硬件描述语言转变成硬件电路的重要工具软件称为HDL综合器。二、单项选择题1、VHDL语言属于B描述语言。A.一般硬件B.行为C.高级D.初级2、基于硬件描述语言HDL的数字系统设计当前最常用的设计方法为BA.自底向上B.自顶向下C.积木式D.顶层3、在EDA工具中,能将硬件描述语言转变成硬件电路的重要工具软件称为BA.仿真器B.综合器C.适配器D.下载器4、在EDA工具中,能完成目标系统器件上布局软件称为CA.仿真器B.综合器C.适配器D.下载器第2章、大规模可编程逻辑器件一、填空题1、集成度是集成电路一项重要的指标,可编程逻辑器件按集成密度可分为低密度可编程逻辑器件和高密度可编程逻辑器件两类。2、可编程逻辑器件的编程方式可分为一次性可编程(OTP)和可多次编程(MTP)两类。3、基于EPROM、E2PROM和快闪储藏器件的可编程器件,在系统断电后编程信息不扔掉。4、基于SRAM构造的可编程器件,在系统断电后编程信息会扔掉。5、CPLD器件中最少包括可编程逻辑宏单元、可编程I/O单元、可编程内部连线三种构造。6、FPGA的三种可编程电路分别是可编程逻辑块CLB、输入与输出模块IOB、互连资源三种构造。7、依照逻辑功能块的大小不相同,可将FPGA分为细粒度和粗粒度两类;据FPGA内部连线构造的不相同,可将FPGA分为分段互连和连续互连

两类;据

FPGA采用的开关元件不相同,可将

FPGA分为一次编程

和可重复编程

两类.8、当前常有的可编程逻辑器件的编程和配置工艺包括基于电可擦储藏单元E2PROM或

Flash技术

、基于

SRAM

查找表的编程单元

和基于反熔丝编程单元

三种编程工艺。二、单项选择题1、在以下可编程逻辑器件中,不属于高密度可编程逻辑器件的是DA.EPLDB.CPLDC.FPGAD.PAL2、在以下可编程逻辑器件中,属于易失性器件的是CA.EPLDB.CPLDC.FPGAD.PAL3、在自顶向下的设计过程中,描述器件总功能的模块一般称为BA.基层设计B.顶层设计C.完满设计D.全面设计4、界线扫描测试技术主要解决C的测试问题A.印制电路板B.数字系统C.芯片D.微办理器三、简答题1、CPLD和FPGA有什么差别?在实质应用中各有什么特点?1、差别:(1)CPLD:复杂可编程逻辑器件,FPGA:现场可变成门阵列;(2)CPLD:基于乘积项技术的确定型构造,FPGA:基于查找表技术的统计型构造;(3)CPLD:5500~50000门,FPGA:1K~10M门。实质应用中各自的特点:CPLD适用于逻辑密集型中小规模电路,编程数据不扔掉,延迟固定,时序牢固;FPGA适用于数据密集型大规模电路,需用专用的ROM进行数据配置,布线灵便,但时序特点不牢固第3章、VHDL编程基础一、填空题1、VHDL设计实体的基本构造由库、实体、构造体、程序包和配置等部分组成。2、实体和构造体是设计实体的基本组成部分,他们能够组成最基本的VHDL程序。3、在VHDL的端口声明语句中,端口方向包括in、out、buffer和inout。4、VHDL的数据对象包括常数constant、变量variable和信号signal,它们是用来存放各各种类数据的容器。5、VHDL的操作符包括逻辑操作符、关系操作符、算术操作符和符号操作符。6、VHDL的序次语句只能出现在进度process、函数function和过程procedure中,是依照书写序次自上而下,一条一条执行。7、VHDL的进度(process)语句是由序次语句组成的,但其自己却是并行语句。二、单项选择题1、一个实体能够拥有一个或多个BA.设计实体B.构造体C.输入D.输出2、在VHDL中用D来把特定的构造体关系到一个确定的实体。A.输入B.输出C.综合D.配置3、在以下表记符中,A.4h_add

C是VHDLB.h_adde_

合法的表记符C.h_adder

4、在以下表记符中,

A是

VHDL

错误的表记符A.4h_add

B.h_adde4

C.h_adder_4

5、在VHDL中为目标变量赋值符号为

CA.=

B.<=

C.:=

D.=:6、在VHDL语言中,用语句

B表示检测到时钟clk的上升沿A.clk’event

B.clk

’eventandclk=

‘1’C.clk=

‘0’

D.clk

’eventandclk=

‘0’7、在VHDL的并行语句之间中,只能用

C来传达信息A.变量

B.变量和信号

C.信号

D.常量8、VHDL

块语句是并行语句构造,它的内部是由

C语句组成的A.并行温序次

B.序次

C.并行

D.任何9、若S1为”1010”,为S2”0101,”下面程序执行后,outValue输出结果为:libraryieee;

A。useieee.std_logic_1164.all;entityexisport(S1:instd_logic_vector(3downto0);S2:instd_logic_vector(0to3);outValue:outstd_logic_vector(3downto0));Endex;architecturertlofexisbeginoutValue(3downto0)<=(S1(2downto0)andnotS2(1to3))&(S1(3)xorS2(0));endrtl;A、“0101”B、“0100”C、“0001”D、“0000”10、假设输入信号a=“6”,b=“E”,则以下程序执行后,c的值为C。entitylogicisport(a,b:instd_logic_vector(3downto0);c:outstd_logic_vector(7downto0));endlogic;architectureaoflogicisbeginc(0)<=nota(0);c(2downto1)<=a(2downto1)andb(2downto1);c(3)<='1'xorb(3);c(7downto4)<="1111"when(a(2)=b(2))else"0000";enda;A“F8”B“FF”C“F7”D“0F”三、鉴识以下程序的对错,并改正有错的程序1、libraryieee;useieee.std_logic_1164.all;entitytestisport(d,clk:instd_logic;q:outstd_logic);endtest;architectureoneoftestisbeginprocess(clk)beginwaituntilclk’eventandclk=‘1’q<=d;endprocess;endone;1、错。含有Wait语句的进度的敏感列表不能够有信号。可去掉进度后的敏感列表中的信号clk或将waituntil语句改为用if语句实现时钟上升沿2、libraryieee;useieee.std_logic_1164.all;entitytestisport(clk:instd_logic;count:outstd_logic_vector(3downto0));endtest;architecturetwooftestisbeginprocess(clk)beginifclk’eventandclk=’1’count<=count+1;endif;endprocess;endtwo;

then2、错。端口

count是输出端口,不能够作为输入,应改为

buffer,别的库的声明应加上useieee.std_logic_unsigned.all;3、LIBRARYieee;USEieee.std_logic_1164.all;USEieee.std_logic_arith.all;ENTITYforloopISport(a:instd_logic_vector(7downto0);y:outstd_logic);ENDENTITYforloop;ARCHITECTURErtl_loopOFforloopISBEGINprocess(a)variabletemp:std_logic;begintemp<=1;foriin0to7looptemp<=tempxora(i);endloop;y<=temp;endprocess;ENDARCHITECTURErtl;3、错。Temp为变量,变量赋值要用“:=”,而不是“<=”。4、LIBRARYieee;USEieee.std_logic_1164.all;USEieee.std_logic_arith.all;ENTITYmux4ISport(s1,s2:instd_logic;a,b,c,d:instd_logic;muxout:outstd_logic);ENDENTITYmux4;ARCHITECTURErtlOFmux4ISBEGINcases1&s2iswhen"00"=>muxout<=a;when"01"=>muxout<=b;when"10"=>muxout<=c;when“11”=>muxout<=d;endcase;ENDARCHITECTURErtl;4、错。Case语句是序次语句,必定放在进度和子程序中,在程序的构造体里将case语句放在process语句中,如:process(a,b,c,d,s1,s2),在case完后要加endprocess;别的,a,b,c,d定义的是

std_loigc

种类,因此

case语句的最后一个

when后要加上

whenothers=>四、编程题1、编写8选1数据选择器的VHDL源程序。设电路的16位数据输入位A[7:0],选择信号为sel[2:0],使能控制端位ena,高电平有效,数据选择输出为Y。1、libraryieee;useieee.std_logic_1164.all;entitymux8_1isport(sel:instd_logic_vector(2downto0);A:instd_logic_vector(7downto));Ena:instd_logic;Y:outstd_logic);Endmux8_1;Architecturearchofmux8_1isBeginY<=A(0)whensel=

“000”

elseA(1)whensel=

“001”

elseA(2)whensel=

“010”

elseA(3)whensel=

“011”

elseA(4)whensel=

“100”

elseA(5)whensel=

“101”

elseA(6)whensel=

“110”

elseA(7);Endarch;该参照程序采用条件并行语句实现,也可用序次语句实现。2、编写带异步复位和同步置位的D型触发器的VHDL源程序。设电路的复位端为clr,置位端为

prd,均为低电平有效。互补输出为

Q和

QN。2、libraryieee;useieee.std_logic_1164.all;entitydff_1isport(clk:instd_logic;clr,prd:instd_logic;instd_logic;Q,QN:outstd_logic);Enddff_1;Architecturearchofdff_1isSignalQ_tmp:std_logic;BeginProcess(clk,clr)BeginIf(clr=‘0’)thenQ_tmp<=‘0’;Elsif(lk’eventandclk=If(prd=‘0’)thenQ_tmp<=‘1’;

‘1’)thenElseQ_tmp<=D;Endif;Endif;Endprocess;Q<=Q_tmp;QN<=notQ_tmp;Endarch;3、试用VHDL设计一个24进制的计数器,输入输出信号以以下列图所示。其中信号clk5是clk五分频的输出;high信号是2bit,是计数器的十位输出;low信号是4bit,是计数器的个位输出;rst高有效。rsthighclkclk5计数器low分频器3、libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycounter24isport(rst,clk:instd_logic;high:outstd_logic_vector(1downto0);low:outstd_logic_vector(3downto0));ENDENTITYcounter24;ARCHITECTURErtlOFcounter24ISsignalclk5:std_logic;signalcnter8:std_logic_vector(2downto0):="000";signalhigh_in:std_logic_vector(1downto0):="00";signallow_in:std_logic_vector(3downto0):="0000";BEGINprocess(clk)beginifrising_edge(clk)thenifcnter8="100"thencnter8<="000";elsecnter8<=cnter8+1;endif;endif;endprocess;process(cnter8)beginifcnter8="100"thenclk5<='1';elseclk5<='0';endif;endprocess;high<=high_in;low<=low_in;process(rst,clk5)beginifrst='1'thenhigh_in<="00";low_in<="0000";elsifrising_edge(clk5)theniflow_in="0011"andhigh_in="10"thenlow_in<="0000";high_in<="00";elsiflow_in="1001"thenlow_in<="0000";high_in<=high_in+1;elselow_in<=low_in+1;endif;endif;endprocess;ENDARCHITECTURErtl;4、8位二进制数据收发器的VHDL源程序。设电路的输入/输出(双向)为A[7:0]和B[7:0],OEN是使能控制端,且为0时工作,为1时被静止工作,此时A[7:0]和B[7:0]为高阻态。DTR为收发控制端,为1时数据由A[7:0]发送到B[7:0],为则相反。4、libraryieee;useieee.std_logic_1164.all;entityDTR8isport(oen,dtr:instd_logic;A,B:inoutstd_logic_vector(7downto0));EndDTR8;ArchitecturearchofDTR8isSignalAreg,Breg:std_logic_vector(7downto0);BeginProcess(dtr,A)BeginIfdtr=‘1’thenBreg<=A;Endif;Endprocess;Process(dtr,B)BeginIfdtr=‘0’thenAreg<=B;Endif;Endprocess;B<=Bregwhenoen=‘0’else“ZZZZZZZZ”;“ZZZZZZZZ”;endarch;第四章、EDA开发软件及EDA实验开发平台一、填空题1、MaxplusⅡ支持图形、文本、波形和符号等不相同编写方式。2、指定设计电路的输入/输出端口与目标芯片引脚的连接关系的过程称为引脚锁定。3、在完成设计电路的输入/输出端口与目标芯片引脚的锁定后,再次对设计电路的仿真称时序仿真或后仿真。二、单项选择题1、MaxplusⅡ是cA.高级语言B.硬件描述语言C.EDA工具软件D.综合软件2、在使用MaxplusⅡ工具软件实现文本输入时应采用B方式。A.图形编写B.文本编写C.符号编写D.波形编写3、执行MaxplusⅡ的B命令,能够对设计电路进行功能仿真或时序仿真A.CreateDefaultSymbolB.SimulatorC.CompilerD.TimingAnalyzerMaxplusⅡ的图形设计文件种类是BA..scfB..gdfC..vhdD..v第5章、电子系统EDA设计的应用实例线性分组码编译码器I2C串行总线接口模块电路一、设计题1、设计线性分组码编译码器在通信系统中,由于信道存在大量噪声和搅乱,使得经信道传输后的接收码与发送码之间存在差别即出现误码。在数字通信系统中常采用差错控制信道编码技术,减少传输过程的误码,提高数字通信系统的传输质量。差错控制技术的基本思想是经过对信息序列做某种变换,如增加校验码元等,使得原来相关性很小的信息码元产生某种相关性,从而在接收端利用这种相关性来检查并纠正信息码元在传输中引起的差错。线性分组编码是采用增加校验码的差错控制的信道编码方式,在这种方式中,每个码组(字)只与该码字的信息码元相关,称为分组码,而且分组码内的规律是线性的,因此称为线性分组码。设计实现(7,4)线性分组码的编译码电路,其生成矩阵G为1101000G011010011100101010001督查矩阵H为1001011H01011100010111提示:线性分组编码时,将每K个信息位分为一组进行独立办理,按必然规律给每个信息组增加n-k个校验码元,组成长度为n的二进制码字,这种编码方式记为(n,k)分组码。信息位和校验位存在着线性关系。若线性分组码的输入信息位为u{u0,u1,...,uk},编码输出为c{c0,c1,...,cn},则有以下关系:cu*GH*cT0T式中G为线性分组码的生成矩阵,H为督查矩阵。当G确定后,编码方式就完满确定了;当H给定后,编码时校验位和信息位的关系就确定了。因此在设计编码器时,需要确定生成矩阵G,设计译码器时,需要确定督查矩阵H。设发送码字为c{c0,c1,...,cn},e表示传输中的差错,y表示接收码字。若是码字在传输过程中没有出现差错,则有HyTHeT0;出差错时,HyTH(ceT)HeTsT,seHT。其中,s称为陪同子,又称为校正子。由于s只与序列传输中的差错e相关,因此在错码的纠错能力之内,必然的e序列组合必然对应必然的s组合,因此能够起初在接收机中做好对应表,尔后依照序列s正确地判断差错地址,再依照出错地址进行纠正,可获取正确的译码输出。线性分组编码器设计时,依照生成矩阵G可获取相应的编码。即由11010000110100(c0,c1,c2,c3,c4,c5,c6)(u0,u1,u2,u3)11100101010001可获取C的编码输出。其中,前三个重量为增加的校验码元,后4个重量为原输入信息位。线性分组译码是编码的反过程,但较编码要复杂一些。依照在二进制对称条件下,采用译码平均错误概率最小的原则。此时,对于的最可能错误图样是译码汉明距离最小的接收码组,即非零个数最小的码组。依照督查矩阵H能够按以下步骤求解。1、计算接收矢量y的陪同子syHT可得:s0=y0+y3+y5+y6;s1=y1+y3+y4+y5;s2=y2+y4+y5+y62、由陪同子s决定对应的错误图样集e3、将y译成c=y-e。由H督查矩阵可推出校正子s0,s1,s2和错误码码组e向量的对应关系。s0,s1,s2错误地址(e码)s0,s1,s2错误地址(e码)100Y0(0000001)011Y4(00100000)010Y1(0000010)111Y5(01000000)001Y2(0000100)101Y6(10000000)110Y3(0001000)000无错(00000000)2、设计I2C串行总线接口模块电路I2C(InterICBUS)总线是由Philips公司推出的芯片间串行总线,它以两根连线实现了完满的全双工同步的数据传达,能够极方便的组成多机系统和外面器件扩展系统。它解决了由于使用并行总线扩展时连线过多,外面器件工作方式各异,外面器件与数据储藏器混和编址而给单片机应用系统带来的困难。I2C总线在标准模式下,数据传达速率可达100kbit/s,高速模式下可达400kbit/s,总线的驱动能力受总线电容限制,不加驱动扩展时驱动能力为400pF。为了能使总线实现线与功能,各个I2C总线的接口电路的输出端必定是漏极开路或集电极开路构造,因此输出端必定加上拉电阻。其总线以以下列图所示。主控器件与从控器件是能够相互变换的,这要看在某一个数据传达周期内,是谁在对时钟线起主控作用。同时,若是总线上有多个主控器件,则它们可能形成多主竞争状态,这时需要加入总线仲裁体系。VCCI2CSCL总线SDA主控器或主控器或主控器或从控器从控器从控器I2C总线有两种时序状态,一种是初步状态,另一种是停止状态。即当SCL时钟信号为高电平时,SDA数据线有一个由高到低电平的跳变,表示总线上数据传输开始。当SCL时钟信号为高电平时,SDA数据线有一个由低到高电平的跳变,表示总线上数据传输结束。没有数据传输时,SDA和SCL都保持高电平的状态。I2C进行总线数据的传输时,在时钟线SCL为高电平时期,数据线SDA必定为牢固状态。只有在SCL为低电平时,SDA上的电平才赞同变化。SDSCI2C总线上是按字节来传达的,每传达一个字节都必定跟一位应答位。第一发送的数据位都必定是最高位。应答信号是在第9个时钟位出现的。发送器释放数据总线,接收器发送一个低电平就为应答信号,高电平就为非应答信号。一次完满的数据传输见以下列图所示。更详细的I2C总线可拜会相应标准。实现I2C总线可分两个模块,发送模块和接收模块。在发送模块中,输入信号由reset(复位输入端)、en(使能控制输入端)、clk(时钟输入端)、data[7:0](8位数据输入信号)。输出信号为scl和sda。其中,scl信号由clk二分频产生,每次在clk信号的上升沿到来时进行电平跳变。Sda信号经过一个状态机实现,每次clk信号下降沿,针对此时的scl信号电平和当前状态机的状态产生sda信号。接收模块输入为scl和sda信号,输出为data[7:0]8位并行数据。《数字电路EDA设计》习题集参照答案第一章答案:填空题:1、CAD、CAE、EDA2、设计准备、设计输入、设计办理、器件编程3、功能仿真、时序仿真、器件测试4、文本输入方式、图形输入方式、波形输入方式5、VHDL语言VerilogHDL语言6、HDL综合器选择题:BBBC第二章答案:填空题:1、低密度可编程逻辑器件高密度可编程逻辑器件2、一次性可编程(OTP)可多次编程(MTP)3、不扔掉4、会扔掉5、可编程逻辑宏单元、可编程I/O单元、可编程内部连线6、可编程逻辑块CLB、输入/输出模块IOB、互连资源7、细粒度、粗粒度;分段互连型、连续互连型;一次编程型、可重复编程型8、电可擦储藏单元的E2PROM或Flash技术、SRAM查找表的编程单元、反熔丝编程单元选择题:DCBC简答题:(参照)1、差别:(1)CPLD:复杂可编程逻辑器件,FPGA:现场可变成门阵列;(2)CPLD:基于乘积项技术的确定型构造,FPGA:基于查找表技术的统计型构造;(3)CPLD:5500~50000门,FPGA:1K~10M门。实质应用中各自的特点:CPLD适用于逻辑密集型中小规模电路,编程数据不扔掉,延迟固定,时序牢固;FPGA适用于数据密集型大规模电路,需用专用的ROM进行数据配置,布线灵便,但时序特点不牢固第三章答案:填空题:1、库、实体、构造体、程序包、配置2、实体、构造体3、inoutbufferinout4、常数constant、变量variable、信号signal5、逻辑操作符、关系操作符、算术操作符、符号操作符6、进度process、函数function、过程procedure7、序次语句、并行语句选择题:BDBACBCCAC改错题:(参照)1、错。含有Wait语句的进度的敏感列表不能够有信号。可去掉进度后的敏感列表中的信号clk或将waituntil语句改为用if语句实现时钟上升沿2、错。端口count是输出端口,不能够作为输入,应改为buffer,别的库的声明应加上useieee.std_logic_unsigned.all;3、错。

Temp为变量,变量赋值要用“

:=”,而不是“

<=”。4、错。Case语句是序次语句,必定放在进度和子程序中,在程序的构造体里将

case语句放在process语句中,如:process(a,b,c,d,s1,s2),在case完后要加endprocess;另外,a,b,c,d定义的是std_loigc种类,因此case语句的最后一个when后要加上whenothers=>编程题:(参照)1、libraryieee;useieee.std_logic_1164.all;entitymux8_1isport(sel:instd_logic_vector(2downto0);A:instd_logic_vector(7downto));Ena:instd_logic;Y:outstd_logic);Endmux8_1;Architecturearchofmux8_1isBeginY<=A(0)whensel=

“000”

elseA(1)whensel=

“001”

elseA(2)whensel=

“010”

elseA(3)whensel=

“011”

elseA(4)whensel=

“100”

elseA(5)whensel=

“101”

elseA(6)whensel=

“110”

elseA(7);Endarch;该参照程序采用条件并行语句实现,也可用序次语句实现。2、libraryieee;useieee.std_logic_1164.all;entitydff_1isport(clk:instd_logic;clr,prd:instd_logic;instd_logic;Q,QN:outstd_logic);Enddff_1;Architecturearchofdff_1isSignalQ_tmp:std_logic;BeginProcess(clk,clr)BeginIf(clr=‘0’)thenQ_tmp<=‘0’;Elsif(lk’eventandclk=If(prd=‘0’)then

‘1’)thenQ_tmp<=‘1’;ElseQ_tmp<=D;Endif;Endif;Endprocess;Q<=Q_tmp;QN<=notQ_tmp;Endarch;3、libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycounter24isport(rst,clk:instd_logic;high:outstd_logic_vector(1downto0);low:outstd_logic_vector(3downto0));ENDENTITYcounter24;ARCHITECTURErtlOFcounter24ISsignalclk5:std_logic;signalcnter8:std_logic_vector(2downto0):="000";signalhigh_in:std_logic_vector(1downto0):="00";signallow_in:std_logic_vector(3downto0):="0000";BEGINprocess(clk)beginifrising_edge(clk)thenifcnter8="100"thencnter8<="000";elsecnter8<=cnter8+1;endif;endif;endprocess;process(cnter8)beginifcnter8="100"thenclk5<='1';elseclk5<='0';endif;endprocess;high<=high_in;low<=low_in;process(rst,clk5)beginifrst='1'thenhigh_in<="00";low_in<="0000";elsifrising_edge(clk5)theniflow_in="0011"andhigh_in="10"thenlow_in<="0000";high_in<="00";elsiflow_in="1001"thenlow_in<="0000";high_in<=high_in+1;elselow_in<=low_in+1;endif;endif;endprocess;ENDARCHITECTURErtl;4、libraryieee;useieee.std_logic_1164.all;entityDTR8isport(oen,dtr:instd_logic;A,B:inoutstd_logic_vector(7downto0));EndDTR8;ArchitecturearchofDTR8isSignalAreg,Breg:std_logic_vector(7downto0);BeginProcess(dtr,A)BeginIfdtr=‘1’thenBreg<=A;Endif;Endprocess;Process(dtr,B)BeginIfdtr=‘0’thenAreg<=B;Endif;Endprocess;B<=Bregwhenoen=‘0’else“ZZZZZZZZ”;A<=Aregwhenoen=‘0’else“ZZZZZZZZ”;endarch;第四章答案:填空题:1、图形、符号、文本、波形2、引脚锁定3、时序仿真或后仿真选择题:CBBB第五章答案:1、线性分组编码器的VHDL参照程序libraryieee;useieee.std_logic_1164.all;enityencodeisport(clk:instd_logic;UI:instd_logic_vector(3downto0);Co:outstd_logic_vector(6downto0));Endencode;ArchitecturearchofencodeisSignalcc:std_logic_vector(6downto0);BeginCc(0)<=UI(0)xorUI(2)xorUI(3);Cc(1)<=UI(0)xorUI(1)xorUI(2);Cc(2)<=UI(1)xorUI(1)xorUI(3);Cc(3)<=UI(0);Cc(4)<=UI(1);Cc(5)<=UI(2);Cc(6)<=UI(3);Process(clk)BeginIfclk’eventandclk=‘1’thenCo<=cc;Endif;Endprocess;Endarch;线性分组解码器的VHDL参照程序:libraryieee;useieee.std_logic_1164.all;enitydecodeisport(clk:instd_logic;y:instd_logic_vector(6downto0);outstd_logic_vector(6downto0));enddecode;architercturearchofdecodeissignale:std_logic_vector(6downto0);signals:std_logic_vector(2downto0);begins(0)<=Y(0)xorY(3)xorY(5)xorY(6);s(1)<=Y(1)xorY(3)xorY(4)xorY(5);s(2)<=Y(2)xorY(4)xorY(5)xorY(6);e(0)<=s(0)and(nots(1))and(nots(2));e(1)<=(nots(0))ands(1)and(nots(2));e(2)<=(nots(0))and(nots(1))ands(2);e(3)<=s(0)ands(1)and(nots(2));e(4)<=(nots(0))ands(1)ands(2);e(5)<=s(0)ands(1)ands(2);e(6)<=s(0)and(nots(1))ands(2);process(clk)beginifclk’eventandclk=

‘1’

thenc<=yxore;endif;endprocess;endarch;2、发送模块参照程序libraryieee;useieee.std_logic_1164.all;entityI2C_transmitterisport(clk,reset,en:instd_logic;data:instd_logic_vector(7downto0);scl,sda:outstd_logic);endptos_port;architecturearchofI2C_transmitterissignaldatabuff:std_logic_vector(7downto0);signallink_sda,sdabuff,sclbuff:std_logic;typestatesis(ready,start,st1,st2,st3,st4,st5,st6,st7,st8,st9,stop,idle);signalstate:states;beginsda<=sdabuffwhenlink_sda=

‘1’

else‘Z’;scl<=sclbuff;--产生scl时钟u1:process(reset,clk)beginif(reset=‘1’)thensclbuff<=‘1’;elsif(clk’eventandclk=sclbuff<=notsclbuff;endif;endu1;

‘1’)then--用一个状态机控制sda信号的产生u2:process(reset,clk)beginifreset=‘1’thenlink_sda<=‘0’;state<=ready;sdabuff<=‘1’;elsifclk’eventandclk=‘0’casestateiswhenready=>ifen=‘1’thenlink_sda<=‘1’;state<=start;

thenelselink_sda<=‘0’;state<=ready;endif;whenstart=>ifsclbuff=‘1’anden=sdabuff<=‘0’;state<=st1;elsestate<=start;endif;whenst1=>ifsclbuff=‘0’thensdabuff<=databuff(7);state<=st2;elsestate<=st1;endif;whenst2=>ifsclbuff=‘0’thensdabuff<=databuff(6);state<=st3;elsestate<=st2;endif;whenst3=>ifsclbuff=‘0’thensdabuff<=databuff(5);state<=st4;elsestate<=st3;endif;whenst4=>ifsclbuff=‘0’thensdabuff<=databuff(4);state<=st5;elsestate<=st5;endif;whenst5=>ifsclbuff=‘0’thensdabuff<=databuff(3);state<=st6;else

‘1’thenstate<=st5;endif;whenst6=>ifsclbuff=‘0’thensdabuff<=databuff(2);state<=st7;elsestate<=st6;endif;whenst7=>ifsclbuff=‘0’thensdabuff<=databuff(1);state<=st8;elsestate<=st7;endif;whenst8=>ifsclbuff=‘0’thensdabuff<=databuff(0);state<=st9;elsestate<=st8;endif;whenst9=>ifsclbuff=‘0’thensdabuff<=‘0’;state<=stop;elsestate<=st9;endif;whenstop=>ifsclbuff=‘1’thensdabuff<=;‘1’state<=idle;elsestate<=stop;endif;whenidle=>link_sda<=‘0’;state<=ready;endcase;endif;endu2;--缓存接收到的数据u3:process(en)beginif(en=‘1’)thendatabuff<=data;endif;endu3;endarch;接收模块参照程序libraryieee;useieee.std_logic_1164.all;entityI2C_receiverisport(scl,sda:instd_logic;reset:instd_logic;data:outstd_logic_vector(7downto0));endI2C_receiver;architecturearchofI2C_receiverissignalstart_bit,end_bit,receive:std_logic;signaldatabuff:std_logic_vector(7downto0);typestateis(st1,st2,st3,st4,st5,st6,st7,st8,st9);signalstate:states;beginu1:process(sda,reset)beginif(reset=‘1’)thenstart_bit<=‘0’;elsif(sda’eventandsda=ifscl=‘1’thenstart_bit<=‘1’elsestart_bit<=‘0’endif;

;;

‘0’)thenendif;endu1;u2:process(sda,reset)beginif(reset=‘1’)thenend_bit<=‘0’;data<=”00000000”;elsif(sda’eventandsda=ifscl=‘1’thenend_bit<=‘1’;data<=databuff;

‘1’)thenelseend_bit<=‘0’;endif;endif;endu2;u3:process(start_bit,end_bit,reset)beginif(reset=‘1’)thenreceive<=‘0’;elsif(start_bit=‘1’)thenreceive<=‘1’;elsif(end_bit=‘1’)thenreceive<=‘0’;endif;endu3;u4:process(scl,reset)beginifreset=‘1’thenstate<=st1;elsifscl’eventandscl=‘1’if(receive=‘1’)then

thencasestateiswhenst1=>state<=st2;databuff(7)<=sda;whenst2=>state<=st3;databuff(6)<=sda;whenst3=>state<=st4;databuff(5)<=sda;whenst4=>state<=st5;databuff(4)<=sda;whenst5=>state<=st6;databuff(3)<=sda;whenst6=>state<=st7;databuff(2)<=sda;whenst7=>state<=st8;databuff(1)<=sda;whenst8=>state<=st9;databuff(0)<=sda;whenst9=>state<=st1;endcase;endif;endif;endu4;endarch;思虑:1、上述程序中没有加入ack确认信号的功能,若是要加入程序该如何改正?(可通过改正状态机)2、如将发送模块和接收模块放在一个模块(即一个实体里)程序又该如何改正?1.EDA设计流程一般包括设计输入器件下载4个步骤;2.EDA的设计输入法中常用的有ABEL-VHDL3种;

、设计实现VHDL

、设计考据Verilog-VHDL

和和3.功能仿真是在设计输入完成后,选择详细器件进行编译从前进行的逻辑功能考据,因此又称为前仿真;4.当前最流行的并成为IEEE标准的硬件描述语言包括VHDL和Verilog-VHDL;5.硬件描述语言HDL给PLD和授课系统的设计带来了更新的设计方法和理念,产生了目前最常用的并称之为自顶向下的方法;6.将硬件描述语言转变成硬件电路的重要工具软件称为HDL综合器;7.用MAX+PLUSⅡ的输入法设计的文件不能够直接保存在根目录下,因此设计者在进入设计从前,应当在计算机中建立保存设计文件的文件夹;8.图形文件设计结束后必然要经过编译,检查设计文件可否正确;9.指定设计电路的输入/输出端口与目标芯片引脚的锁定后,再次对设计电路的仿真称为引脚锁定和后仿真;10.以EDA方式实现的电路设计文件,最后能够编程下载到或芯片中,完成硬件设计和考据;11.一般将一个完满的VHDL程序称为独立的实体;12.用

VHDL

设计的电路,既能够被高层次的系统调用,成为系统的一部分,也能够作为一个电路的功能块独立运行和独立存在;13.VHDL设计实体的基本构造由实体、构造体、庫、程序包和配置部分组成;14.实体和构造体是设计实体的基本组成部分,它们能够组成最基本的VHDL程序;15.IEEE于1987年宣告了VHDL的标准;16.IEEE于1993年宣告了VHDL的语法标准;17.在VHDL中最常用的库是IEEE标准库;18.VHDL的实体是由声明部分和构造部分组成;19.VHDL的实体声明部分指定了设计单元的引脚或输入/输出,它是设计实体对外的一个通信界面,是外界能够看到的部分;20.VHDL的构造体用来描述设计实体的逻辑功能和逻辑构造,它由VHDL语句组成是外界看不到部分;21.在VHDL的数据端口声明语句中,端口方向包括IN、OUT、INOUT和BUFFER;22.VHDL的数据对象包括变量、常数和信号,它们是用来存放各

温馨提示

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

评论

0/150

提交评论