资源描述:
《VHDL作业及答案1》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4节PPT课件作业1.VHDL程序一般包含几个组成部分?各部分的作用是什么?实体,结构体,库,程序包,配置实体:用于描述所设计系统的外部接口特性;即该设计实体对外的输入、输出端口数量和端口特性。结构体:用于描述实体所代表的系统内部的结构和行为;它描述设计实体的结构、行为、元件及内部连接关系。库:存放已经编译的实体、构造体、程序包集合和配置。程序包:存放各设计模块都能共享的数据类型、常数和子程序库;配置:实体对应多个结构体时,从与某个实体对应的多个结构体中选定一个作为具体实现。2.端口模式有哪几种?buffer类型与inout类型的端口有什么区别?Out,i
2、n,inout,bufferout(输出):只能被赋值,用于不能反馈的输出;in(输入):只能读,用于时钟输入、控制输入单向数据输入;inout(输入输出):既可读又可被赋值,被读的值是端口输入值而不是被赋值,作为双向端口。buffer(缓冲):类似于输出,但可以读,读的值是被赋值,用做内部反馈用,不能作为双向端口使用。3.下列标识符中,哪些是非法的?Led3coder__1endportstd_machine2adderdecoder*8and_2__decoder_1and2and_2and__2and-24.指出下面的实体描述中存在的四处语法错误并改正
3、LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux21aISPORT(a,b,s:INBIT;y:OUTBIT;);(1.删除括号内的分号)ENDENTITYmux;(2.改为mux21a)ARCHITECTUREoneOFmux21aISBEGINPROCESS(a,b,s)Beginifs=‘0’theny<=a;elsey<=b;endif;endprocess(结束少了一个分号)ENDARCHITECTUREnone;(none改为one)5.写出下图所示的设计实体mux41的实体声明。所有端口都采用bi
4、t或bit_vector类型。mux41AaBAaCBAaDCBAaSEL[1..0]QDCBAaENTITYmux41ISPORT(A,B,C,D:INBIT;SEL:INBIT_VECTOR(1DOWNTO0);Q:OUTBIT);ENDENTITYmux41;6.表达式C<=A+B中,A、B、C的数据类型都是STD_LOGIC_VECTOR,是否能直接进行加法运算?说明原因和解决方法。答:不能直接进行加法运算。因为+号只能对整数类型进行直接相加,如果要对STD_LOGIC_VECTOR数据类型进行+法操作,需要调用运算符重载,即在程序的开头打开IEEE
5、.STD_LOGIC_UNSIGNED.ALL程序包,或者把STD_LOGIC_VECTOR数据类型改为整数类型。7.能把任意一种进制的值向一整数类型的对象赋值吗?如果能,怎样做?答:能。见书上P322页8.判断下列VHDL的数值表示是否合法,如果有误指出原因16#0FA#10#12F#8#789#8#356#2#0101010#9.数据类型BIT,INTEGER,BOOLEAN分别定义在那个库中?哪些库和程序包总是可见的?答:BIT,INTEGER,BOOLEAN分别定义在STD库的STANDARD程序包中(见书上P324-325)WORK库,STD库总是
6、可见的(P316-317)11.VHDL语言数据对象有哪几种?作用范围如何?对其赋初值作用有何不同?答:VHDL语言数据对象有信号,变量,常量。要回答的特别详细12.判断下面三个程序中是否有错误,若有则指出错误所在。程序1:signala,en:std_logic;process(a,en)variableb:std_logic;beginifen=1thenb<=a;(错误2处。1.en为std_logic类型,此类型赋值为en=‘1’;2.b为变量,变量赋值采用:=)endif;endprocess;程序2:architectureoneofsample
7、isvariablea,b,c:integer;(结构体里面不能定义变量,只能定义信号)beginc<=a+b;endarchitectureone;程序3:libraryieee;Useieee.std_logic_1164.all;Entitymux21isPort(a,b:instd_logic;sel:instd_logic;c:outstd_logic);endEntitysam2;(1.sam2改为mux21)architectureoneofsampleis(2.sample改为mux21)beginprocess(a,b.sel)(6.if语
8、句应该放在process中)beginifsel=‘