vhdl期末考试复习题

合集下载

EDA技术与VHDL期末考试试卷

EDA技术与VHDL期末考试试卷

一、单项选择题:(20分)1. IP核在EDA技术和开发中具有十分重要的地位;提供用VHDL等硬件描述语言描述的功能块,但不涉及实现该功能块的具体电路的IP核为__________。

DA .瘦IP B.固IP C.胖IP D.都不是2.综合是EDA设计流程的关键步骤,在下面对综合的描述中,_________是错误的。

DA. 综合就是把抽象设计层次中的一种表示转化成另一种表示的过程;B. 综合就是将电路的高级语言转化成低级的,可与FPGA / CPLD的基本结构相映射的网表文件;C. 为实现系统的速度、面积、性能的要求,需要对综合加以约束,称为综合约束;D. 综合可理解为一种映射过程,并且这种映射关系是唯一的,即综合结果是唯一的。

3.大规模可编程器件主要有FPGA、CPLD两类,下列对FPGA结构与工作原理的描述中,正确的是__C__。

A. FPGA全称为复杂可编程逻辑器件;B. FPGA是基于乘积项结构的可编程逻辑器件;C. 基于SRAM的FPGA器件,在每次上电后必须进行一次配置;D. 在Altera公司生产的器件中,MAX7000系列属FPGA结构。

4.进程中的信号赋值语句,其信号更新是___C____。

A. 按顺序完成;B. 比变量更快完成;C. 在进程的最后完成;D. 都不对。

5. VHDL语言是一种结构化设计语言;一个设计实体(电路模块)包括实体与结构体两部分,结构体描述___________。

BA. 器件外部特性;B. 器件的内部功能;C. 器件的综合约束;D. 器件外部特性与内部功能。

6.不完整的IF语句,其综合结果可实现________。

AA. 时序逻辑电路B. 组合逻辑电路C. 双向电路D. 三态控制电路7.子系统设计优化,主要考虑提高资源利用率减少功耗(即面积优化),以及提高运行速度(即速度优化);指出下列哪些方法是面积优化_________。

B①流水线设计②资源共享③逻辑优化④串行化⑤寄存器配平⑥关键路径法A. ①③⑤B. ②③④C. ②⑤⑥D. ①④⑥8.下列标识符中,__________是不合法的标识符。

vhdl期末考试复习题大全 (2)

vhdl期末考试复习题大全 (2)

VHDL 改错题VHDL复习一.改错题1.已知sel为STD_LOGIC_VECTOR(1 DOWNTO 0)类型的信号,而a、b、c、d、q均为STD_LOGIC类型的信号,请判断下面给出的CASE语句程序片段:●CASE sel IS●WHEN“00”=>q<=a;●WHEN“01”=>q<=b;●WHEN“10”=>q<=c;●WHEN“11”=>q<=d;●END CASE;●答案:CASE语句缺“WHEN OTHERS”语句。

2.已知data_in1, data_in2为STD_LOGIC_VECTOR(15 DOWNTO 0) 类型的输入端口,data_out为STD_LOGIC_VECTOR(15 DOWNTO 0)类型的输出端口,add_sub为STD_LOGIC 类型的输入端口,请判断下面给出的程序片段:●LIBRARY IEEE;●USE IEEE.STD_LOGIC_1164.ALL;●ENTITY add IS●PORT(data_in1, data_in2:IN INTEGER;●data_out:OUT INTEGER);●END add;●ARCHTECTURE add_arch OF add IS●CONSTANT a:INTEGER<=2;●BEGIN●data_out<=( data_in1+ data_in2) * a;●END addsub_arch;答案:常量声明时赋初值的“<=”符号应改用“:=”符号。

3.已知Q为STD_LOGIC类型的输出端口,请判断下面的程序片段:●ARCHITECTURE test_arch OF test IS●BEGIN●SIGNAL B:STD_LOGIC;●Q<= B;END test_arch答案:信号SIGNAL的声明语句应该放在BEGIN语句之前。

(完整版)VHDL复习

(完整版)VHDL复习

百度题库VHDL复习资料1.一个完整的VHDL程序,一般有哪几部分组成,它们分别描述的是什么?答:、VHDL程序的基本结构由(库)、(程序包)、(实体)、(结构体)和(配置)组成。

2.IF THEN语句、case when语句、with select语句各是什么类型语句,顺序语句必须放在什么地方?答:IF THEN语句与case when语句是顺序语句,with select语句是并行语句,顺序语句必须放在进程中。

3.结构体中常用的功能描述方式有几种?答:1)行为描述方式 2)数据流描述方式 3)结构化描述方式4.QuartusⅡ是CPLD/FPGA集成开发软件,基于QuartusⅡ软件进行设计开发,包括几个步骤,分别是什么?答:步骤分别是:1)新建项目 2)设计输入 3)分析综合及设计编译4)时序仿真 5)引脚分配及下载配置5.1987VHDL标准中规定标识符由什么组成,有什么具体要求?答:标识符可以由英文字母,数字,下划线“-”等组成选择填空1.在VHDL语言中,下列对时钟边沿检测描述中,错误的是( D )。

A.if clk’event and clk = ‘1’ thenB. if falling_edge(clk) thenC. if clk’event and clk = ‘0’ thenD.if clk’stable and not clk = ‘1’ then2.一个项目的输入输出端口是定义在( A )。

A.实体中B.结构体中C.任何位置D.进程体3. 下列语句中,不属于并行语句的是( B )。

A.进程语句B.CASE语句C.元件例化语句D.WHEN…ELSE…语句4.描述项目具有逻辑功能的是( B )。

A.实体B.结构体C.配置D.进程5.关键字ARCHITECTURE定义的是( A)。

A.结构体B.进程C.实体D.配置6.关键字ARCHITECTURE定义的是( A )。

A.结构体B.进程C.实体D.配置7.QUARTESII中编译VHDL源程序时要求( A )。

EDA技术与VHDL复习练习题

EDA技术与VHDL复习练习题

EDA技术与VHDL复习练习题探<习题一>一、填空题1、PLD的中文含义是: _______ 。

2、ASIC的中文含义是: _______ 。

3、“与-或”结构的可编程逻辑器件主要由四部分构成:________ 、 ________ 、 ___________ 和____________ 。

4、可编程逻辑器件结构图中一般用“ x ”表示此编程单元为________ 。

5、可编程逻辑器件结构图中一般用“ •”表示此编程单元为________ 06可编程逻辑器件结构图中无任何标记表示此编程单元为____________ 07、可编程逻辑器件按规模的大小一般分为________ 和 _________ o8、低密度可编程逻辑器件的主要有_______ 和9、GAL器件 _______ 代全部PAL器件。

10、PAL器件只能 _______ 编程。

11、GAL器件能 _______ 编程。

12、GAL器件 _______ 代TTL器件。

13、GAL器件采用 _____ 擦除。

14、PAL和GAL器件_______ 系统编程。

15、PAL和GAL器件需要使用_______ 程二、选择题1、可编程逻辑器件PLD的基本结构形式是A :与——与B:与——或C :或---- 与D:或---- 或2、可以多次编程的器件是______ :A : PROMB : PLAC : PALD : GAL3、PLD器件未编程时 ______ :A :有逻辑功能B :没有逻辑功能C : PAL器件有逻辑功能D : GAL器件有逻辑功能4、GAL器件可以用 ____ 擦除:A :普通光B :紫外线C :红外线D :电5、GAL16V8器件的输出引脚最多有______ :A : 16B : 4C : 8D : 206 PAL16V8器件的输入引脚最多有_________A : 16B : 4C : 8D : 207、GAL16V环能取代___________ :A : PAL16V B: 74LS138C : 74LS373D : ispLSI1032E-70PLCC848、GAL16V8勺________ 可编程:A :与阵列B :或阵列C :输出逻辑宏单元OLMCD : A、B都三、判断题1、GAL器件的输出逻辑宏单元OLM不能实现PAL 器件的所有输出形式。

vhdl期末考试复习题大全

vhdl期末考试复习题大全

VHDL 复习一.问答题一.问答题1信号赋值语句在什么情况下作为并行语句?在什么情况下作顺序语句?信号赋值和变量赋值符号分别是什么?两种赋值符号有什么区别?赋值符号分别是什么?两种赋值符号有什么区别?l 信号赋值语句在进程外作并行语句,并发执行,与语句所处的位置无关。

信号赋值语句在进程内或子程序内做顺序语句,按顺序执行,与语句所处的位置有关。

语句在进程内或子程序内做顺序语句,按顺序执行,与语句所处的位置有关。

l 信号赋值符号为“<=”变量赋值用变量赋值用““:=”。

信号赋值符号用于信号赋值动作,信号赋值符号用于信号赋值动作,不立不立即生效。

变量,赋值符号用于变量赋值动作,立即生效。

即生效。

变量,赋值符号用于变量赋值动作,立即生效。

2进程的敏感信号表指的是什么?简述敏感信号表在进程中的作用?进程的敏感信号表指的是什么?简述敏感信号表在进程中的作用?l 进程的“敏感信号表”也称敏感表,是进程的激活条件,可由一个或多个信号组成,各信号间以“,”号分隔。

当敏感信号表中的任一个信号有事件发生,即发生任意变化,此时,进程被激活,进程中的语句将从上到下逐句执行一遍,当最后一条语句执行完毕之后,进程即进入等待挂起状态,直到下一次敏感表中的信号有事件发生,进程再次被激活,如此循环往复。

件发生,进程再次被激活,如此循环往复。

3什么是库、程序包、子程序、过程调用和函数调用?什么是库、程序包、子程序、过程调用和函数调用?l 库和程序包用来描述和保存元件、类型说明和子程序等,以便在其它设计中通过其目录可查询、调用。

子程序由过程和函数组成。

在子程序调用过程中,过程能返回多个变量,多个变量,函数只能返回一个变量。

函数只能返回一个变量。

函数只能返回一个变量。

若子程序调用的是一个过程,若子程序调用的是一个过程,若子程序调用的是一个过程,就称为过程调用,就称为过程调用,若子程序调用的是一个函数,则称为函数调用。

过程调用、函数调用都是子程序调用。

vhdl期末考试题库及答案

vhdl期末考试题库及答案

vhdl期末考试题库及答案VHDL期末考试题库及答案一、选择题1. VHDL是一种用于电子设计自动化的硬件描述语言,主要用于描述什么?A. 软件程序B. 硬件电路C. 数据库D. 操作系统答案:B2. 在VHDL中,哪个关键字用于定义一个进程?A. processB. procedureC. functionD. package答案:A3. 下列哪个不是VHDL的预定义数据类型?A. bitB. integerC. realD. boolean答案:A4. VHDL中,哪个属性用于获取信号的稳定值?A. 'stable'B. 'event'C. 'quiet'D. 'transaction'答案:A5. 在VHDL中,以下哪个是合法的信号赋值语句?A. signal a : integer := 5;B. signal a : integer is 5;C. signal a <= 5;D. signal a : integer = 5;答案:C二、简答题1. 简述VHDL中的并发语句和顺序语句的区别。

答案:并发语句用于描述多个独立操作同时发生,如进程和并行块;顺序语句描述操作的顺序执行,如if语句、case语句等。

2. 解释VHDL中的时序仿真和功能仿真的区别。

答案:时序仿真考虑了信号的时序特性,如延迟和时间,用于验证设计在实际工作条件下的行为;功能仿真则不关心时序,只验证设计的功能正确性。

三、编程题1. 编写一个VHDL程序,实现一个简单的二进制加法器。

答案:```vhdlentity adder isport(A, B : in bit_vector(1 downto 0);Sum : out bit_vector(1 downto 0);Carry : out bit);end entity adder;architecture behavior of adder isbeginprocess(A, B)begincase A iswhen "00" => Sum <= "00"; Carry <= '0';when "01" => Sum <= "01"; Carry <= '0';when "10" => Sum <= "01"; Carry <= '0';when "11" => Sum <= "10"; Carry <= '1';end case;end process;end architecture behavior;```四、论述题1. 论述在VHDL中使用测试平台(testbench)的重要性。

VHDL复习资料

VHDL复习资料⼀.填空(每空1分,共20分)1.MAX+plusII是ALTERA 公司⾃⼰开发的EDA ⼯具软件。

2. VHDL设计实体的基本结构由库、程序包、实体、结构体、配置等部分构成。

3.在VHDL中最常⽤的库IEEE 标准库,最常⽤的包集合是1164。

4.在VHDL的端⼝声明语句中,端⼝⽅向包括输⼊(in)、输出(out)、输⼊|输出(inout)、缓冲和。

5.VHDL的顺序语句只能出现在进程、函数、过程中,是按程序书写顺序⾃上⽽下,⼀条⼀条地执⾏。

6.VHDL的块语句是并⾏语句结构,它的内部是由并⾏语句构成的7.VHDL的变量(VARIABLE)是⼀种局部量,只能在进程、函数和过程中声明和使⽤。

8.MAX+plusII⽀持⽂本、原理图、波形、符号编辑等不同的编辑⽅式。

9.MAX+plusII⼯具软件有功能、时序、仿真等功能。

10.MAX—PLUSⅡ的波形编辑⽂件分波形输⼊和波形仿真,它们的⽂件扩展名分别是W D F 和S C F。

11.VHDL的实体声明部分指定了设计单元的输⼊输出端⼝,它是设计实体对外的通信界⾯,是外界可以看到的部分。

12.CPLD和FPGA的含义分别是复杂可编程逻辑器件,现场可编程门阵列。

13.在VHDL中,含WAIT语句的进程Process的括号不能再加敏感量 ,否则是⾮法的.14.VHDL的Process(进程)语句是由顺序语句组成的,但其本⾝却是并发语句结构。

15.VHDL的⼦程序有函数和过程两种类型。

16.在VHDL中,标准逻辑位数据有 0和1种逻辑值。

17.MAX—PLUSⅡ的仿真分功能仿真和时序仿真。

18.VHDL的变量(VARIABLE)是⼀个功能变量,只能在进程、函数和过程中声明和使⽤。

19.VHDL的数据对象包括常数、变量、信号和⽂件。

20. 实体和结构体是设计实体的基本组成部分,它们可以构成最基本的VHDL程序。

20.VHDL语⾔的字符是以字母的下划线括起来的数字、字母和符号。

VHDL复习题

一、选择题( A )1.一个项目得输入输出端口就是定义在:A、实体中B、结构体中C、任何位置D、进程体( B)2.描述项目具有逻辑功能得就是:A、实体B、结构体C、配置D、进程( A )3.关键字ARCHITECTURE定义得就是:A、结构体B、进程C、实体D、配置( D )4.VHDL语言中变量定义得位置就是:A、实体中中任何位置B、实体中特定位置C、结构体中任何位置D、结构体中特定位置( D )5.VHDL语言中信号定义得位置就是:A、实体中任何位置B、实体中特定位置C、结构体中任何位置D、结构体中特定位置( B )6.变量就是局部量可以写在:A、实体中B、进程中C、线粒体D、种子体中( A )7.变量与信号得描述正确得就是:A、变量赋值号就是:=B、信号赋值号就是:=C、变量赋值号就是<=D、二者没有区别( B )8、变量与信号得描述正确得就是:A、变量可以带出进程B、信号可以带出进程C、信号不能带出进程D、二者没有区别( )9.对于信号与变量得说法,哪一个就是不正确得:A、信号用于作为进程中局部数据存储单元B、变量得赋值就是立即完成得C、信号在整个结构体内得任何地方都能适用D、变量与信号得赋值符号不一样( A )10.下列关于变量得说法正确得就是:A.变量就是一个局部量,它只能在进程与子程序中使用B.B、变量得赋值不就是立即发生得,它需要有一个δ延时C、在进程得敏感信号表中,既可以使用信号,也可以使用变量D、变量赋值得一般表达式为:目标变量名<= 表达式( C )11.可以不必声明而直接引用得数据类型就是:A、STD_LOGICB、STD_LOGIC_VECTORC、BITD、前面三个答案都就是错误得( C )12.STD_LOGIG_1164中定义高阻得字符就是:A、XB、xC、zD、Z( A )13.STD_LOGIG_1164中字符H定义得就是:A、弱信号1B、弱信号0C、没有这个定义D、初始值( B )14.使用STD_LOGIG_1164中得数据类型时:A、可以直接调用B、必须在库与包集合中声明C、必须在实体中声明D、必须在结构体中声明( B )15.关于转化函数说法正确得就是:A、任何数据类型都可以通过转化函数相互转化B、只有特定类型得数据类型可以转化C、任何数据类型都不能转化D、前面说法都就是错误得( C )16.VHDL运算符优先级说法正确得就是:A、逻辑运算得优先级最高B、关系运算得优先级最高C、逻辑运算得优先级最低D、关系运算得优先级最低( D )17.VHDL运算符优先级说法正确得就是:A、NOT得优先级最高B、AND与NOT属于同一个优先级C、NOT得优先级最低D、前面得说法都就是错误得( D )18.VHDL运算符优先级说法正确得就是:A、括号不能改变优先级B、不能使用括号C、括号得优先级最低D、括号可以改变优先级( B )19.如果a=1,b=0,则逻辑表达式(a AND b) OR( NOT b AND a)得值就是:A、0B、1C、2D、不确定( B )20.正确给变量X赋值得语句就是:A、X<=A+B;B、X:=A+b;C、X=A+B;D、前面得都不正确( )21.VHDL文本编辑中编译时出现如下得报错信息,其错误原因就是:Error: VHDL syntax error: choice value length must match selector expression value lengthA、表达式宽度不匹配B、错将设计文件存入了根目录,并将其设定成工程C、设计文件得文件名与实体名不一致D、程序中缺少关键词( D )22.在VHDL语言中,下列对时钟边沿检测描述中,错误得就是:A、if clk’event and clk = ‘1’ thenB、if falling_edge(clk) thenC、if clk’event and clk = ‘0’ thenD、if clk’stable and not clk = ‘1’ then ( D )23.在VHDL中,可以用以下哪条语句表示检测clock下降沿:A、clock’ eventB、clock’ event and clock=’1’(上升沿)C、clock=’0’D、clock’ event and clock=’0’( D )24.VHDL语言共支持四种常用库,其中哪种库就是用户得VHDL设计现行工作库:A、IEEE库B、VITAL库C、STD库D、WORK工作库( A )25.VHDL常用得库就是:A、IEEEB、STDC、WORKD、PACKAGE( B )26.下列语句中,不属于并行语句得就是:A、进程语句B、CASE语句C、元件例化语句D、WHEN…ELSE…语句( D )27.下面哪一个可以用作VHDL中得合法得实体名:A、ORB、VARIABLEC、SIGNALD、OUT1( B )28.下列关于CASE语句得说法不正确得就是:A、条件句中得选择值或标识符所代表得值必须在表达式得取值范围内B、CASE语句中必须要有WHEN OTHERS=>NULLC、CASE语句中得选择值只能出现一次,且不允许有相同得选择值得条件语句出现D、CASE语句执行必须选中,且只能选中所列条件语句中得一条( D )29.VHDL中,为目标变量赋值符号就是:A、=:B、=C、<=D、:=( B )30.VHDL语言就是一种结构化设计语言,一个设计实体(电路模块)包括实体与结构体两部分,结构体描述:A、器件外部特性B、器件得内部功能C、器件得综合约束D、器件外部特性与内部功能。

vhdl期末考试复习提纲(考点大全)

Vhdl复习考试题型:单项选择题:(10*2=20分)简答题:(5*4=20分,每小题5分)判断改错题:(2*5=20分)综合题:(共50分)VHDL 大小写不敏感实体(Entity)描述此设计功能输入输出端口(Port)在层次化设计时,Port为模块之间的接口在芯片级,则代表具体芯片的管脚Entity eqcomp4 isport(a, b: in std_logic_vector(3 downto 0);equal:out std_logic);end eqcomp4;实体--端口的模式输入(Input)输出(Output)双向(Inout):可代替所有其他模式,但降低了程序的可读性,一般用于与CPU的数据总线接口缓冲(Buffer):与Output类似,但允许该管脚名作为一些逻辑的输入信号结构体(Architecture)描述实体的行为结构体有三种描述方式-行为描述(behavioral)-数据流描述(dataflow)-结构化描述(structural)结构体--行为描述结构体--数据流描述描述输入信号经过怎样的变换得到输出信号结构体--结构化描述三种描述方式的比较VHDL标识符(Identifiers)•基本标识符由字母、数字和下划线组成•第一个字符必须是字母•最后一个字符不能是下划线•不允许连续2个下划线•保留字(关键字)不能用于标识符•大小写是等效的VHDL数据对象(Data Objects)•常数(Constant)–固定值,不能在程序中被改变–增强程序的可读性,便于修改程序–在综合后,连接到电源和地–可在Library、Entity、Architecture、Process中进行定义,其有效范围也相应限定Constant data_bus_width: integer := 8;•信号(Signals)–代表连线,Port也是一种信号–没有方向性,可给它赋值,也可当作输入–在Entity中和Architecture中定义–设定的初始值在综合时没有用,只是在仿真时在开始设定一个起始值。

(完整word版)VHDL试卷

2009/2010 学年第一学期末考试试题答案及评分标准(A卷)一、填空题(20分,每空格1分)1、一个完整的VHDL语言程序通常包含实体(entity),构造体(architecture),配置(configuration),包集合(package)和库(library) 5各部分。

2、在一个实体的端口方向说明时,输入使用in表示,那么构造体内部不能再使用的输出是用 out 表示;双向端口是用 inout 表示;构造体内部可再次使用的输出是用 buffer 表示;3、一个构造体可以使用几个子结构,即相对比较独立的几个模块来构成。

VHDL语言可以有以下3种形式的子结构描述语句: BLOCK 语句结构; PROCESS 语句结构和SUBPROGRAMS 结构。

4、VHDL的客体,或称数据对象包括了常数、变量variable 和信号signal 。

5、请列出三个VHDL语言的数据类型,如实数、位等。

位矢量,字符,布尔量。

6、设D0为'0', D1为'0', D2为'1', D3为'0', D0 & D1 & D2 & D3的运算结果是“0010”,D3 & D2 & D1 & D0的运算结果是“0100”。

7、构造体的描述方式包括三种,分别是寄存器传输(RTL)描述方法或称数据流;构造体的结构描述方式和构造体的行为描述方式。

二、判断对错并给出判断依据(20分,每小题5分,判断对错2分,给出正确答案3分)1、传统的系统硬件设计方法是采用自上而下(top down)的设计方法,利用硬件描述语言(HDL)的硬件电路设计方法采用自下而上(bottom up)的设计方法。

(×)传统的系统硬件设计方法是采用自下而上(bottom up)的设计方法,利用硬件描述语言(HDL)的硬件电路设计方法采用自上而下(top down)的设计方法2、VHDL可以采用层次化的设计,一个高层的结构体中可以调用低层的实体(√)3、一个VHAL程序中仅能使用一个进程(process)语句。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VHDL复习一.问答题1信号赋值语句在什么情况下作为并行语句?在什么情况下作顺序语句?信号赋值和变量赋值符号分别是什么?两种赋值符号有什么区别?●信号赋值语句在进程外作并行语句,并发执行,与语句所处的位置无关。

信号赋值语句在进程内或子程序内做顺序语句,按顺序执行,与语句所处的位置有关。

●信号赋值符号为“<=”变量赋值用“:=”。

信号赋值符号用于信号赋值动作,不立即生效。

变量,赋值符号用于变量赋值动作,立即生效。

2进程的敏感信号表指的是什么?简述敏感信号表在进程中的作用?●进程的“敏感信号表”也称敏感表,是进程的激活条件,可由一个或多个信号组成,各信号间以“,”号分隔。

当敏感信号表中的任一个信号有事件发生,即发生任意变化,此时,进程被激活,进程中的语句将从上到下逐句执行一遍,当最后一条语句执行完毕之后,进程即进入等待挂起状态,直到下一次敏感表中的信号有事件发生,进程再次被激活,如此循环往复。

3什么是库、程序包、子程序、过程调用和函数调用?●库和程序包用来描述和保存元件、类型说明和子程序等,以便在其它设计中通过其目录可查询、调用。

子程序由过程和函数组成。

在子程序调用过程中,过程能返回多个变量,函数只能返回一个变量。

若子程序调用的是一个过程,就称为过程调用,若子程序调用的是一个函数,则称为函数调用。

过程调用、函数调用都是子程序调用。

二.改错题1.已知sel为STD_LOGIC_VECTOR(1 DOWNTO 0)类型的信号,而a、b、c、d、q均为STD_LOGIC类型的信号,请判断下面给出的CASE语句程序片段:●CASE sel IS●WHEN“00”=>q<=a;●WHEN“01”=>q<=b;●WHEN“10”=>q<=c;●WHEN“11”=>q<=d;●END CASE;●答案:CASE语句缺“WHEN OTHERS”语句。

2.已知data_in1, data_in2为STD_LOGIC_VECTOR(15 DOWNTO 0) 类型的输入端口,data_out 为STD_LOGIC_VECTOR(15 DOWNTO 0)类型的输出端口,add_sub为STD_LOGIC类型的输入端口,请判断下面给出的程序片段:●LIBRARY IEEE;●USE IEEE.STD_LOGIC_1164.ALL;●ENTITY add IS●PORT(data_in1, data_in2:IN INTEGER;●data_out:OUT INTEGER);●END add;●ARCHTECTURE add_arch OF add IS●CONSTANT a:INTEGER<=2;●BEGIN●data_out<=( data_in1+ data_in2) * a;●END addsub_arch;答案:常量声明时赋初值的“<=”符号应改用“:=”符号。

3.已知Q为STD_LOGIC类型的输出端口,请判断下面的程序片段:●ARCHITECTURE test_arch OF test IS●BEGIN●SIGNAL B:STD_LOGIC;●Q<= B;END test_arch答案:信号SIGNAL的声明语句应该放在BEGIN语句之前。

4.已知A和Q均为BIT类型的信号,请判断下面的程序片段:●ARCHITECTURE archtest OF test IS●BEGIN●CASE A IS●WHEN ‘0’=>Q<=‘1’;●WHEN ‘1’=>Q<=‘0’;●END CASE;●END archtest;答案:CASE语句应该存在于进程PROCESS内。

三.程序设计1@4位二进制并行加法器的源程序ADDER4B.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ADDER4B IS --4位二进制并行加法器PORT(CIN:IN STD_LOGIC;--低位进位A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);--4位加数B:IN STD_LOGIC_VECTOR(3 DOWNTO 0);--4位被加数S:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--4位和CONT:OUT STD_LOGIC);END ADDER4B;ARCHITECTURE ART OF ADDER4B ISSIGNAL SINT:STD_LOGIC_VECTOR(4 DOWNTO 0);SIGNAL AA,BB:STD_LOGIC_VECTOR(4 DOWNTO 0);BEGINAA<='0'& A;--将4位加数矢量扩为5位,为进位提供空间BB<='0'& B;--将4位被加数矢量扩为5位,为进位提供空间SINT<=AA+BB+CIN ;S<=SINT(3 DOWNTO 0);CONT<=SINT(4);END ART;2@ 8位二进制加法器的源程序ADDER8B.VHDLIBRARY IEEE;USE IEEE_STD.LOGIC_1164.ALL;USE IEEE_STD.LOGIC_UNSIGNED.ALL:ENTITY ADDER8B IS--由4位二进制并行加法器级联而成的8位二进制加法器PORT(CIN:IN STD_LOGIC;A:IN STD_LOGIC_VECTOR(7 DOWNTO 0);B:IN STD_LOGIC_VECTOR(7 DOWNTO 0);S:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);COUT:OUT STD_LOGIC);END ADDER8B;ARCHICTURE ART OF ADDER8B ISCOMPONENET ADDER4B--对要调用的元件ADDER4B的界面端口进行定义PORT(CIN:IN STD_LOGIC;A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);B:IN STD_LOGIC_VECTOR(3 DOWNTO 0);S:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);CONT:OUT STD_LOGIC);END COMPONENT ;SIGNAL CARRY_OUT:STD_LOGIC;--4位加法器的进位标志BEGINU1:ADDER4B --例化(安装)一个4位二进制加法器U1 PORT MAP(CIN=>CIN,A=>A(3 DOWNTO 0),B=>B(3 DOWNTO0),S=>S(3 DOWNTO 0),COUT=>CARRY_OUT);U2:ADDER4B --例化(安装)一个4位二进制加法器U2PORT MAP(CIN=>CARRY_OUT,A=>A(7 DOWNTO 4),B=>B(7 DOWNTO 4),S=>S (7 DOWNTO 4);CONT=>CONT);END ART;3.@触发器和缓冲器D触发器:Process(clk) beginif(clk’event and clk=‘1’) thenq <= d;end if;end process;缓冲器:Process(clk)beginif(clk=‘1’) thenq <= d;end if;end process;T触发器:Process(clk)beginif(clk’event and clk=‘1’) then if(t = ‘1’) thenq <= not(q);elseq <= q;end if;end if; end process;4.@16位锁存器的源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG16B IS --16位锁存器PORT (CLK:IN STD_LOGIC;--锁存信号CLR:IN STD_LOGIC;--清零信号D:IN STD_LOGIC_VECTOR (8 DOWNTO 0) --8位数据输入Q:OUT STD_LOGIC_VECTOR(15 DOWNTO 0));--16位数据输出END REG16B;ARCHITECTURE ART OF REG16B ISSIGNAL R16S:STD_LOGIC_VECTOR(15 DOWNTO 0);--16位寄存器设置BEGINPROCESS (CLK,CLR)BEGINIF CLR = '1' THEN R16S<= "0000000000000000";--异步复位信号ELSIF CLK'EVENT AND CLK = '1' THEN--时钟到来时,锁存输入值R16S(6 DOWNTO 0)<=R16S(7 DOWNTO 1);--右移低8位R16S(15 DOWNTO 7)<=D;--将输入锁到高能位END IF;END PROCESS;Q<=R16S;END ART;5@8位右移寄存器的源程序SREG8B.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;--8位右移寄存器ENTITY SREG8B ISPORT (CLK:IN STD_LOGIC;LOAD :IN STD _LOGIC;BIN:IN STD_LOGIC_VECTOR(7DOWNTO 0);QB:OUT STD_LOGIC );END SREG8B;ARCHITECTURE ART OF SREG8B ISSIGNAL REG8B:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINPROCESS (CLK,LOAD)BEGINIF CLK'EVENT AND CLK= '1' THENIF LOAD = '1' THEN REG8<=DIN;--装载新数据ELSE REG8(6 DOWNTO0)<=REG8(7 DOWNTO 1);--数据右移END IF;END IF;END PROCESS;QB<= REG8 (0);--输出最低位END ART;6@8位乘法器的源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;--8位乘法器顶层设计ENTITY MULTI8X8 ISPORT(CLK:IN STD_LOGIC;START:IN STD_LOGIC;--乘法启动信号,高电平复位与加载,低电平运算A:IN STD_LOGIC_VECTOR(7 DOWNTO 0);--8位被乘数B:IN STD_LOGIC_VECTOR(7 DOWNTO 0);--8位乘数ARIEND:OUT STD_LOGIC;--乘法运算结束标志位DOUT:OUT STD_LOGIC_VECTOR(15 DOWNTO 0));--16位乘积输出END MULTI8X8;ARCHITECTURE ART OF MULTI8X8 ISCOMPONENT ARICTL --待调用的乘法控制器端口定义PORT(CLK:IN STD_LOGIC;START:IN STD_LOGIC;CLKOUT:OUT STD_LOGIC;RSTALL:OUT STD_LOGIC;ARIEND:OUT STD_LOGIC);END COMPONENT;COMPONENT ANDARITH --待调用的控制与门端口定义PORT(ABIN:IN STD_LOGIC;DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0);DOUT:OUT_STD_LOGIC_VECTOR( 7 DOWNTO 0) );END COMPONENT;COMPONENT ADDER8B --待调用的8位加法器端口定义COMPONENT SREG8B --待调用的8位右移寄存器端口定义...COMPONENT REG16B --待调用的16右移寄存器端口定义...SIGNAL GNDINT:STD_LOGIC;SIGNAL INTCLK:STD_LOGIC;SIGNAL RSTALL:STD_LOGIC;SIGNAL QB:STD_LOGIC;SIGNAL ANDSD:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL DTBIN:STD_LOGIC_VECTOR(8 DOWNTO 0);SIGNAL DTBOUT:STD_LOGIC_VECTOR(15 DOWNTO 0);BEGINDOUT<=DTBOUT;GNDINT<= '0';U1:ARICTL PORT MAP(CLK=>CLK,START=>START,CLKOUT=>INTCLK,RSTALL=>RSTALL,ARIEND=>ARIEND);U2:SREG8B PORT MAP(CLK=>INTCLK,LOAD=>RSTALL.DIN=>B,QB=>QB);U3:ANDARITH PORT MAP(ABIN=>QB,DIN=>A,DOUT=>ANDSD);U4:ADDER8B PORTMAP(CIN=>GNDINT,A=>DTBOUT(15 DOWNTO 8),B=>ANDSD,S=>DTBIN(7 DOWNTO 0),COUT =>DTBIN(8));U5:REG16B PORT MAP(CLK =>INTCLK,CLR=>RSTALL,D=>DTBIN,Q=>DTBOUT);END ART;7@有时钟使能的十进制计数器的源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;--有时钟使能的十进制计数器ENTITY CNT10 ISPORT (CLK:IN STD_LOGIC; --计数时钟信号CLR:IN STD_LOGIC;--清零信号END:IN STD_LOGIC;--计数使能信号CQ:OUT INTEGER RANGE 0 TO 15;--4位计数结果输出CARRY_OUT:OUT STD_LOGIC);--计数进位END CNT10;ARCHITECTURE ART OF CNT10 ISSIGNAL CQI :INTEGER RANGE 0 TO 15;BEGINPROCESS(CLK,CLR,ENA)BEGINIF CLR= '1' THEN CQI<= 0;--计数器异步清零ELSIF CLK'EVENT AND CLK= '1' THENIF ENA= '1' THENIF CQI<9 THEN CQI<=CQI+1;ELSE CQI<=0;END IF;--等于9,则计数器清零END IF;END IF;END PROCESS;PROCESS (CQI)BEGINIF CQI=9 THEN CARRY_OUT<= '1';--进位输出ELSE CARRY_OUT<= '0';END IF;END PROCESS;CQ<=CQI;END ART;8@) 六进制计数器的源程序CNT6.VHD(十进制计数器的源程序CNT10.VHD与此类似)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT6 ISPORT (CLK:IN STD_LOGIC;CLR:IN STD_LOGIC;ENA:IN STD_LOGIC;CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);CARRY_OUT:OUT STD_LOGIC );END CNT6;ARCHITECTURE ART OF CNT6 ISSIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK,CLR,ENA)BEGINIF CLR='1' THEN CQI<="0000";ELSIF CLK'EVENT AND CLK='1' THENIF ENA='1' THENIF CQI=“0101” THEN CQI<=“0000”;ELSE CQI<=CQI+'1';END IF;END IF;END IF;END PROCESS;PROCESS(CQI)BEGINIF CQI=“0000” THEN CARRY_OUT<='1';ELSE CARRY_OUT<='0';END IF;END PROCESS;CQ<=CQI;END ART;9@十进制计数器LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY count10 ISPORT(clk: IN STD_LOGIC;seg: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END count10;ARCHITECTURE a1 OF count10 ISsignal sec: STD_LOGIC;signal q : STD_LOGIC_VECTOR(21 DOWNTO 0);signal num: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINprocess(clk) ----get 1 hz clock pulsebeginif clk'event and clk='1' then q<=q+1; end if;sec<=q(21); --get 1 hz clock pulseend process;timing: process(sec) beginif sec'event and sec='1' thenif num<9 then num<=num+1; else num<="0000"; end if; end if;end process;B1: block --bcd-7segsBegin --gfedcbaseg<= "0111111" when num=0 else"0000110" when num=1 else"1011011" when num=2 else"1001111" when num=3 else"1100110" when num=4 else"1101101" when num=5 else"1111101" when num=6 else"0000111" when num=7 else"1111111" when num=8 else"1101111" when num=9 else"0000000";end block;END a1;10@4MHz到1Hz的分频器LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY count ISPORT( clk: in STD_LOGIC;q: out STD_LOGIC;END count;ARCHITECTURE a OF count ISsignal tmp: STD_LOGIC_vector(21 downto 0);Beginprocess(clk) beginif clk'event and clk='1' then tmp<=tmp+1;end if;end process; q<=tmp(21); END a;11@与门ENTITY shili2 isport (input1 : in std_logic;inptu2 : in std_logic;output1 : out std_logic);end entity;architecture one of shili2 is beginoutput1<=input1 and input2; end entity;12@.四输入与门电路library ieee;use ieee.std_logic_1164.all;entity and4 isport(a,b,c,d:in std_logic;y:out std_logic;end and4;architecture and4_1 of and4 isbeginy<= a and b and c and d;end nand4_1;法二(与非门):library ieee;use ieee.std_logic_1164.allentity nand4 isport(a.b,c,d:in std_logic;y:out std_logic);end nand4;architecture nand4_2 of nand4 si beginp1:process(a,b,c,d)variable tmp:std_logic_vector(3 downto 0);begintmp:=a&b&c&d;case tmp iswhen"0000"=>y<='1';when"0001"=>y<='1';when"0010"=>y<='1';when"0011"=>y<='1';when"0100"=>y<='1';when"0101"=>y<='1';when"0110"=>y<='1';when"0111"=>y<='1';when"1000"=>y<='1';when"1001"=>y<='1';when"1010"=>y<='1';when"1011"=>y<='1';when"1100"=>y<='1';when"1101"=>y<='1';when"1110"=>y<='1';when"1111"=>y<='1';when others=>y<='x'; end case;end process;end nand4_2;13@四位全加器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity add isport(a,b:in std_logic_vector(3 downto 0); cin:in std_logic;s:out std_logic_vector(3 downto 0); cout:out std_logic);end add;architecture beh of add isbeginprocess(a,b,cin)ariable x:std_logic_vector(3 downto 0); variable m,n,l:integer;beginm:=conv_integer(a);n:=conv_integer(b);l:=m+n+conv_integer(cin);x:=conv_std_logic_vector(l,4);s<=x(3 downto 0);cout<=x(3);end process;end beh;14@N位移位寄存器:page7015@8位通用寄存器:page13716@串入串出移位寄存器:page138 17@10位计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT10 ISPORT ( CLK ,clr : IN STD_LOGIC ;CQ : OUT STD_LOGIC_VECTOR ( 3 DOWNTO 0 )); END ENTITY CNT10;ARCHITECTURE ONE OF CNT10 ISBEGINPROCESS ( CLK , clr )VARIABLE LCQ : STD_LOGIC_VECTOR ( 3 DOWNTO 0 );BEGINIF RST = ‘1’ THEN LCQ := “0000”;ELSIF CLK’EVENT AND CLK = ‘1’ THENIF LCQ < 9 THEN LCQ := LCQ + 1;ELSE LCQ := “0000” ;END IF; END IF;CQ <= LCQ ;END PROCESS;END ARCHITECTURE ONE;18@八位串行二进制全加器use ieee.std_logic_1164.all;entity product_adder_subtracter isport(a,b:in std_logic_vector(7 downto 0);s:out std_logic_vector(8 downto 0));end;architecture behavioral of product_adder_subtracter is beginbehavior:process(a,b) isvariable carry_in:std_logic;variable carry_out:std_logic;variable op2:std_logic_vector(b'range);beginop2:=b;end if;for index in 0 to 7 loopcarry_in:=carry_out;s(index)<=a(index) xor op2(index)xor carry_in ;carry_out:=(a(index)and op2(index))or(carry_in and (a(index) xor op2(index)));end loop;s(8)<=a(7) xor op2(7) xor carry_out;end process;end;。

相关文档
最新文档