问答题 第1题 本章中经常用到2个名词:信号和结点。请对下面的陈述作出正确与否的判断。
第2题 MAX+plusII中的设计描述、中间结果和最终结果都是以文件形式保存。请问项目(Project)和文件是什么关系? 第3题 在MAX+plusII系统中,VHDL文件及其文件名应遵循一定规则,请判断以下陈述 是否正确。
第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源码、模拟所得波形、波形简要分析、小结等。