问答题


 第1题
 本章中经常用到2个名词:信号和结点。请对下面的陈述作出正确与否的判断。

陈 述 是或非
原理图中元件之间的连线反映了信号的流向,因而这种连线称作信号。  
原理图中元件之间的连线实际上是一个线网,可以抽象为一个结点。  





 第2题
 MAX+plusII中的设计描述、中间结果和最终结果都是以文件形式保存。请问项目(Project)和文件是什么关系?



 第3题
 在MAX+plusII系统中,VHDL文件及其文件名应遵循一定规则,请判断以下陈述 是否正确。

陈 述 是或非
文件名必须和该文件中层次最高的ENTITY同名  
文件中层次最高的ENTITY必须出现在文件的开头  
文件名的后缀应当是.txt  
文件名的后缀应当是.vhd  





 第4题
 对项目编译之前一定要指定目标器件吗?



 第5题
 对项目编译之前一定要给器件作引脚分配吗?



 第6题
 模拟验证这个环节是必不可缺的吗?


 第7题
 用原理图编辑器作全加器设计练习
 设计分解是化繁为简的方法之一。现在使用此法把4位加法器分解为4个1位加法器(见图P8.1),然后再把1位全加器分解为规模更小的子模块(图P8.2)。全加器中包含2类子元件:半加器half_adder和二输入端或门OR2。OR2是标准门元件,而半加器需要自己设计。
 建立元件库的过程与设计分解的过程恰好相反,采用自底向上的方法,先从半加器开始设计。半加器的原理图示于图P8.3。
          图P8.1 4位加法器原理图



           图P8.2 全加器原理图



          图P8.3 半加器原理图


 1. 用原理图编辑器画出1位半加器的原理图模拟验证直至正确。
 2. 用原理图编辑器画出1位全加器的原理图(把半加器作为子电路调用)
   模拟验证直至正确。
 3. 用原理图编辑器画出4位全加器的原理图(把全加器作为子电路调用)
   模拟验证直至正确。




 8-10题用VHDL作全加器设计练习
 第8题
 半加器的VHDL描述和验证 
 VHDL代码第1-2行的语句为什么必要?
 LIBRARY IEEE;
 USE IEEE.Std_Logic_1164.ALL;

 ENTITY half_adder IS
  PORT( x, y : IN Std_Logic;
    sum, c_out : OUT Std_Logic);
 END half_adder;

 ARCHITECTURE behav1 OF half_adder IS
 BEGIN
  sum <= x XOR y;
  c_out <= x AND y;
 END;



 第9题
 1位全加器的VHDL结构描述和验证
 以全加器原理图(图P8.2)为基础,写出1位全加器的VHDL结构描述
 模拟验证直至正确。




 第10题
 4位全加器的结构描述
 用文本编辑器写出4位全加器的VHDL结构描述模拟验证直至正确。



 11-12题用VHDL对全加器作行为描述和验证
 第11题
 1位全加器的行为描述
 使用Text Editor输入1位全加器的行为描述编译
 使用Wave Form Editor编辑激励波形模拟分析波形直至正确。



 第12题
 8位全加器的行为描述使用Text Editor写出8位全加器的VHDL行为描述(提示:最好使用重载运算符 "+",可利用IEEE库中的std_unsigned程序包)编译使用Wave Form Editor编辑激励波形模拟分析波形直至正确。



 13-15题 锁存器设计练习
 第13题
 用原理图编辑器设计锁存器 锁存器原理图示于图P8.5和图P8.6,二者等价。图P8.6节省1个门,成本较低。 读者可任选其一作练习。

            图P8.5 锁存器原理图一
 


            图P8.6 锁存器原理图二


 [证]:
       图8.5
       图8.6
 练习1:使用Graphic Editor输入波形图P8.5编译
     使用Wave Form Editor编辑激励波形模拟分析波形
     直至正确。
 参考波形如下:

 练习2:针对图P8.6作如上练习,模拟结果应当相同。



 第14题
 用VHDL结构描述设计锁存器
 使用Text Editor输入锁存器的VHDL结构描述编译
 使用Wave Form Editor编辑激励波形模拟分析波形直至正确。
 为了方便读者,下面提供了一个框架,读者可在框架中填入所需代码。
 entity latch is
 begin
  port ( D, clk : in std_logic;
     q, qb out std_logic)
 end;

 architecture struct of latch is
  …….
 begin
  …….
 end;



 第15题
 用VHDL行为描述设计锁存器
 使用Text Editor输入锁存器的VHDL行为描述编译
 使用Wave Form Editor编辑激励波形模拟分析波形直至正确。
 为了方便读者,下面提供了一个框架,读者可在框架中填入所需代码。
 entity latch is
 begin
  port ( D, clk : in std_logic;
    q, qb out std_logic)
 end;

 architecture behv of latch is
  …….

 begin
  …….
 end;



 16-17题用VHDL描述D触发器

    图P8.7 带清零端的D触发器

 第16题
 带异步清零端的D触发器
 如图P8.7所示,信号reset为异步清零端,一旦reset取值为0,立即使触发器清0(输出端q为0)。在reset取值为1的条件下,时钟信号Clock的上升沿将数据输入端D的值打入D触发器。
 使用Text Editor写出上述D触发器的VHDL行为描述编译使用Wave Form Editor编辑激励波形模拟分析波形如果模拟结果波形和预期的波形不一致,则修改VHDL描述,重复以上过程,直至正确。 图P8.7 带清零端的D触发器



 第17题
 带同步清零端的D触发器
 如图P8.7所示,信号reset为同步清零端。当reset取值为0时,在时钟信号Clock的上升沿使触发器清0(输出端q为0)。当reset取值为1时,时钟信号Clock的上升沿将数据输入端D的值打入D触发器。
 使用Text Editor写出上述D触发器的VHDL行为描述编译使用Wave Form Editor编辑激励波形模拟分析波形如果模拟结果波形和预期的波形不一致,则修改VHDL描述,重复以上过程,直至正确。



 第18题
 用VHDL设计空调机控制器
 空调机控制器的输入来自温度传感器(参见图P8.8):当室温高于预先设定的高限(例如25度)时,信号temp_high为'1';否则为'0'。当室温低于预先设定的低限(例如17度)时,信号temp_low为'1';否则为'0'。空调机控制器根据这2个输入信号值的组合向空调机发出适当的命令:Heat表示加热,Cool表示制冷。空调机控制器可以抽象为一个有限状态机,其状态迁移图如图P8.9所示。要求完成的工作如下:
 设计:输入VHDL代码;
 编译;
 模拟;
 分析模拟结果的波形,如果和预期结果不符则修改设计,直至正确。

       图P8.8 空调机控制器作用示意图




           图P8.9 空调机控制器状态迁移图


 ① temp_high = '0' AND temp_low = '0'  ② temp_low = '1'
 ③ temp_high = '1'            ④ reset = '0'



 第19题
 用VHDL设计分频器
 图P8.11是分频器的框图。输入信号reset使分频器进入初始状态。输出信号output是典型的方波,其周期是输入信号clk周期的10倍。

      图P8.11 分频器的框图
  

 下面给出描述该分频器的VHDL源代码,其entity名字是example,architecture名字分别是bad和good。请分别对这2个VHDL描述进行综合和模拟。二者的模拟结果相同;但阅读报告文件后发现:它们的硬件成本(所使用的逻辑单元数)相差很大。请分析造成这种差别的原因。
 -- These examples are used to show how to reduce LOGIC CELLs.
 -- The first example:
 LIBRARY IEEE;
 USE IEEE.STD_LOGIC_1164.ALL;
  
 ENTITY example IS
  PORT( reset, clk: IN STD_LOGIC;
    output : OUT STD_LOGIC);
 END example ;

 ARCHITECTURE bad OF example IS
  SIGNAL counter: integer;
 BEGIN
  proc1: PROCESS (reset, clk)
   VARIABLE MM: integer;
  BEGIN
   IF reset = '0' THEN
    MM := 0;
   ELSIF clk'event and clk='1' THEN
    IF MM < 9 THEN
     MM := MM + 1;
    ELSE
    
MM := 0;
    END IF;
   END IF;
   counter <= MM;
  END PROCESS;
 proc2: PROCESS (counter)
  BEGIN
   IF counter < 5 THEN
    output <= '0';
   ELSE
    output <= '1';
   END IF;
  END PROCESS;
 END bad;
  
 -- The second example:
 ARCHITECTURE good OF example IS
  SIGNAL counter: integer RANGE 0 TO 15;
 BEGIN
  proc1: PROCESS (reset, clk)
   VARIABLE MM: integer RANGE 0 TO 15;
  BEGIN
   IF reset = '0' THEN
    MM := 0;
   ELSIF clk'event and clk='1' THEN
    IF MM < 9 THEN
     MM := MM + 1;
    ELSE
     MM := 0;
    END IF;
   END IF;
   counter <= MM;
  END PROCESS;
 
 proc2: PROCESS (counter)
  BEGIN
   IF counter < 5 THEN
    output <= '0';
   ELSE
    output <= '1';
   END IF;
  END PROCESS;
 END good;



 第20题
 用VHDL设计交通灯控制器
 图P8.12是High_way和Farmroad十字路口交通灯控制示意图,Farmroad上有检测装置,其输出信号为Car_on_Farmroad,当Car_on_Farmroad为真时表示Farmroad上有车等待。
            图P8.12 十字路口交通灯控制示意图
 

         图P8.13是交通灯控制器的有限状态机描述-状态迁移图。

  1. (Car_on_farmroad) AND (Timed_out_long)
  2. (Timed_out_short)
  3. NOT(Car_on_farmroad) OR (Timed_out_long)
  4. Timed_out_short
 图P8.14是设计分解(细化),把交通灯控制器分解为2个部件:Controller和Timer。图中将输入、输出以及两个部件之间的交互信号都表示出来。

             图P8.14 设计分解


 -- 下面给出总体描述,读者在此总体描述的框架下作详细描述 --
 自定义程序包:
 PACKAGE traffic_package IS
  TYPE color IS (green, yellow, red, unknown);
  TYPE state IS (
         highway_light_green,
         highway_light_yellow,
         farmroad_light_green,
         farmroad_light_yellow );
  END traffic_package;

 LIBRARY IEEE;
 USE IEEE.std_logic_1164.ALL;
 USE work.traffic_package.ALL;
 
 ENTITY tlc IS
  PORT(
   reset: IN bit;
   clk: IN bit;
   car_on_farmroad: IN boolean;
   highway_light: OUT color := green;
   farmroad_light: OUT color := red );
  END tlc;
 ARCHITECTURE specification OF tlc IS
   SIGNAL present_state: state;
   SIGNAL timed_out_long: boolean;
   SIGNAL timed_out_short: boolean;
   SIGNAL start_timer: boolean;
   SIGNAL T_enable : boolean;
 BEGIN
  ……..
 END;
 
 具体要求:
 输入交通灯控制器的VHDL行为描述编译使用Wave Form Editor编辑激励波形模拟分析波形。如果发现原始设计中有错误存在,重复上述过程,直至正确为止。
 写出详尽的实验报告, 包括:任务、设计思路、VHDL源码、模拟所得波形、波形简要分析、小结等。