问答题

 第1题
 叙述VHDL中的各种语言层次。


 第2题
 对下面的功能写一个实体(Component_A)和一个结构体(rtl):
  d_out <= (a_in and b_in) and c_in;
 类型指定为std_logic。


 第3题
 解释程序包、例化、类属和结构VHDL。


 第4题
 代码中的"--"的语义是什么?


 第5题
 信号赋值符号是什么样的?


 第6题
 VHDL语言中定义了哪两种延迟模型?


 第7题
 画出图2.25输出信号C1和C2的波形。
 


 第8题
 完成表2.8和表2.9。两个例子中均给定信号a的波形。
 (a) architecture rtl of ex is
   begin
    b <= a;
    c <= b;
   end;
  表2.8
  
 (b) architecture rtl of ex is
   begin
    c <= b;
    b <= a;
   end;
  表2.9
  


 第9题
 assert语句有哪些错误级别?


 第10题
 重写下面的VHDL代码,增加assert语句,使得如果向量a的值等于"111"时,打印信息"too meny ones"。
 architecture rtl of ex is
 signal a: std_logic_vector (2 downto 0);
 begin
   a <= c and b;
 end;


 第11题
 (a) VHDL中有哪3类对象?
 (b) 为什么除bit和bit_vector之外,还需要其它数据类型?


 第12题
 (a) 位串文字用在什么地方?
 (b)VHDL标准中为哪种数据类型定义了位串文字 ?


 第13题
 什么是数组的片?


 第14题
 下面的VHDL代码中使用聚集给向量a赋值有什么优点?
 architecture rtl of ex is
 signal a: std_logic_vector (31 downto 0);
 begin
   a <= (others=>'1');
   …
 end;


 第15题
 下面的赋值语句执行之后向量a 将得到什么值?
 architecture rtl of ex is
 signal a, b: std_logic_vector (4 downto 0);
 signal c: std_logic_vector (0 to 1);
 begin
   a <= (1=>'0', 3=>'1', others=>b(2));
   b <= (1=>'1', 3=>'0', others=>c(1));
   c <= "10";
  end;


 第16题
 (a) 对下面的语句模拟时,信号a的初值是什么?
  type mytype is ('T', 'R', '0', '1');
  signal a: mytype;
 (b) 数据类型为bit的信号,其初值是什么?
 (c) 数据类型为std_logic的信号,其初值是什么?
 (d) 是否可以指定一个信号的初值?如果能,如何指定?


 第17题
 如何描述时钟边沿?


 第18题
 设计一个元件,图2.26表示其输入和输出。
 
 该元件应当有下面的行为:
Sel
q
00
01
10
11
others
a xor b
a or b
a nor b
a and b
'XX'

 (a)用if语句。
 (b)用case 语句。
 (c)用when else 语句。


 第19题
 (a) 数据类型bit在哪个库中定义? (b) 哪个(哪些)库和程序包总是可见的?


 第20题
 至少说出可以保存在程序包中的4种项目。


 第21题
 (a) 至少说出可以定义函数的3个位置。
 (b) 这3个位置中哪个位置有助于函数的再利用?
 (c) 若要使用别的设计者的程序包应当怎么做?


 第22题
 数据类型std_logic为决断类型,其含义是什么?


 第23题
 函数与过程有什么区别?


 第24题
 为什么不应当把函数和过程中的向量长度定义在函数/过程中?


 第25题
 (a) 设计一个程序包,使其包含2个函数:average和sum。函数average应返回两个数的平均数(四舍五入),函数sum应返回其和。这两个函数都应同时定义于整数和std_logic_vector。
 (b) 用上面的函数设计一个元件(c1)。该元件应有4个输入a, b, c和d。输入 a和b的类型为整数(0到127),输入c和d的类型为std_logic_vector(7 downto 0)。该元件应有4个输出:average1, average2, sum1, sum2,即每个函数对应一个输出。average1和sum1的类型为整数(0到127),而Average2和sum2的类型为std_logic_vector(7 downto 0)。


 第26题
 (a) 在VHDL-93标准中定义了哪些移位操作?
 (b) 不用这些移位操作是否可以设计移位寄存器?


 第27题
 什么是层次化设计?


 第28题
 用VHDL描述图2.27所示的方框图,即在元件top中例化元件c1(两次)和元件c2。
 


 第29题
 (a)是否允许几个实体与一个结构体关联?
 (b)是否允许几个结构体与一个实体关联?


 第30题
 如果有几个结构体,你如何指定哪一个需要模拟/综合?


 第31题
 在例化过程中哪个命令可以用来改变类属参数的值?


 第32题
 (a)设计一个带类属参数的或门,它有N个输入和一个延迟Tdelay。N的默认值为3,Tdelay默认值为3 ns。
 (b)在调用该或门的元件中将该类属元件例化2次。使一个或门元件中的类属参数改变为N=4和Tdelay=2 ns,而另一个元件中的类属参数改变为N=5和Tdelay=3 ns。


 第33题
 在元件top中把下面的元件(c1)例化10次。
 entity c1 is
  port (a,b: in std_logic;
        q: out: std_logic);
 end;
 元件top应有下面的实体:
 entity top is
  port ( a,b: in std_logic_vector(9 downto 0);
      q: out: std_logic_ vector(9 downto 0));
 end;
 提示:使用生成语句。