EDA技术与VHDL(第2版)习题解答(4)

2019-08-31 21:12

PROCESS (a)

VARIABLE int : STD_LOGIC; BEGIN int := '1';

FOR i IN a'LENGTH - 1 DOWNTO 0 LOOP --循环语句 IF a(i)='0' THEN int := '0'; END IF; END LOOP; c <=int ; END PROCESS; END; 【例7-19】 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY exn IS

PORT(d1,d2,d3,d4,d5,d6,d7 : IN STD_LOGIC; q1,q2 : OUT STD_LOGIC); END;

ARCHITECTURE exn_behav OF exn IS

COMPONENT andn --调用例10-1的元件调用声明 GENERIC ( n : INTEGER);

PORT(a : IN STD_LOGIC_VECTOR(n-1 DOWNTO 0); C : OUT STD_LOGIC); END COMPONENT ; BEGIN

u1: andn GENERIC MAP (n =>2)

--参数传递映射语句,定义类属变量,n赋值为2 PORT MAP (a(0)=>d1,a(1)=>d2,c=>q1);

u2: andn GENERIC MAP (n =>5) --定义类属变量,n赋值为5

PORT MAP (a(0)=>d3,a(1)=>d4,a(2)=>d5,

a(3)=>d6,a(4)=>d7, c=>q2);

END;

GENERIC说明语句和GENERIC MAP映射语句:便捷、迅速地从外部端口改变元件电路内部参数或结构规模。

8-3 INOUT :输入输出双向端口;半双工; BUFFER :缓冲端口;

区别:允许反馈,即,与INOUT模式相比,BUFFER回读的信号不是由外部输入的,而是由内部产生、

向外输出的信号。

结论:当前时钟周期的输入值来自于上一时钟周期的输出值。 8-4 重载 :重名,参数(返回值)数据类型不同; 重载函数 :函数名相同,参数的数据类型不同;

作用:同样名称的函数可以用不同数据类型的参数,以便调用时分辨不同功能的同名函数; 运算符重载函数:

作用 :通过重新定义运算符,允许被重载的运算符能够对新的数据类型进行操作,或者允许不同的

数据类型之间用此运算符进行运算。

8-5 VHDL综合器支持的类型:STRING、BIT; 8-6 【例8-28】

LIBRARY IEEE ;

USE IEEE.STD_LOGIC_1164.ALL ; USE IEEE.STD_LOGIC_UNSIGNED.ALL ; ENTITY decoder3t08 IS

port ( input: IN STD_LOGIC_VECTOR ( 2 DOWNTO 0 ) ; output: OUT BIT_VECTOR ( 7 DOWNTO 0 ) ) ; END ENTITY decoder3t08 ;

ARCHITECTURE behave OF decoder3t08 IS BEGIN

output <= “00000001” SLL CONV_INTEGER ( input ) ;

input output 000 00000001 001 00000010

010 00000100 011 00001000 100 00010000 101 00100000 110 01000000 111 10000000

END behave ;

8-7 不能,因为求和操作符“+”的操作数的数据类型必须是整数;解决方法:设计一个函数

FUNCTION“+”(A,B:STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR,功能是:使用conv_integer( )将A、B转换成整数,A+B=>C,然后再用conv_std_logic_vector( )将C转换成std_logic_vector类型。 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; PACKAGE STD_LOGIC_UNSIGNED IS FUNCTION “+”( L,R: STD_LOGIC_VECTOR )

RETURN STD_LOGIC_VECTOR;

END STD_LOGIC_UNSIGNED;

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; PACKAGE BODY STD_LOGIC_UNSIGNED IS FUNCTION “+”(L,R: STD_LOGIC_VECTOR; )

RETURN STD_LOGIC_VECTOR IS

VARIABLE result: INTEGER RANGE –255 TO +255; BEGIN

result:=CONV_INTEGER( L ) + CONV_INTEGER( R ); RETURN CONV_STD_LOGIC_VECTOR( result, L?length); END;

END STD_LOGIC_UNSIGNED; ……

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE. STD_LOGIC_UNSIGNED.ALL; ENTITY ADDER IS

PORT( A,B: IN STD_LOGIC_VECTOR; C: OUT STD_LOGIC_VECTOR); END ENTITY ADDER;

ARCHITECTURE behav OF ADDER IS BEGIN C<=A+B; END behav;

8-8 数据对象3类: 1)常量(CONSTANT)

CONSTANT 常数名:数据类型:=表达式

2)变量(VARIABLE)

VARIABLE 变量名:数据类型:=初始值 3)信号(SIGNAL)

SIGNAL 信号名:数据类型:=初始值 例如:

SIGNAL a: STD_LOGIC_VECTOR; 8-9 能。

FUNCTION DECIMAL

( X: std_logic_vector;CARDINAL_Num:integer ) RETURN integer IS BEGIN

VARIABLE temp: integer:=0;

FOR I in X? length-1 DOWNTO 1 LOOP temp:=( temp+X( I ) )*CARDINAL_Num; END LOOP;

temp:=temp+X(0); RETURN temp;

END FUNCTION DECIMAL; 8-10 16#0FA# -- 起始为非英文字母;

符号“#”不能成为标识符的构成;

10#12F# -- 同上 8#789# -- 同上 8#356# -- 同上 2#0101010# -- 同上

74HC245 -- 起始为非英文字母;

\\74HC574\\ -- 符号“\\”不能成为标识符的构成; CLR/RESET -- 符号“\\”不能成为标识符的构成;

\\IN 4/SCLK\\ -- 符号“\\、/”和空格不能成为标识符的构成; D100% -- 符号“%”不能成为标识符的构成; 8-11 BIT、INTEGER、BOOLEAN:STD库;

IEEE:STD_LOGIC_1164、NUMERIC_BIT、NUMERIC_STD、MATH_REAL、MATH_COMPLEX —>显式表达; STD :STANDARD、TEXTIO —>无须显式表达; WORK :无须显式表达,总是可见; 8-12

8-13 (1)BIT :枚举型,值 :0/1,数据对象 :变量、信号, 参与逻辑运算,参与关系运算(=,=/);

BOOLEAN :枚举型,值 :FALSE/TRUE,关系运算符、逻辑运算符获得;

(2)都可以,逻辑操作的基本数据类型 :BIT、BOOLEAN、STD_LOGIC及BIT、STD_LOGIC所对应的


EDA技术与VHDL(第2版)习题解答(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:沛县10W扩建施工组织方案(加氯加矾)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: