Assignment+2-2014-.doc

上传人:scccc 文档编号:12063507 上传时间:2021-12-01 格式:DOC 页数:9 大小:210KB
返回 下载 相关 举报
Assignment+2-2014-.doc_第1页
第1页 / 共9页
Assignment+2-2014-.doc_第2页
第2页 / 共9页
Assignment+2-2014-.doc_第3页
第3页 / 共9页
Assignment+2-2014-.doc_第4页
第4页 / 共9页
Assignment+2-2014-.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《Assignment+2-2014-.doc》由会员分享,可在线阅读,更多相关《Assignment+2-2014-.doc(9页珍藏版)》请在三一文库上搜索。

1、Assignment 21. (7.10) Implement a NAND gate model using the IEEE nine-valued system. For the RS flip-flop shown in Figure 7.60, assume that both gate outputs are initially U, and that the two inputs and are initially 0 and switch to 1 simultaneously. Simulate the circuit at logic gate level when:a.

2、Both gates have identical delays.b. The two gates have different delays. Compare your results.Figure 7.60 R-S flip-flopSolution:NAND门的9值模型可以根据课上的或门模型得出,其中需要改动的地方有:(1) 更改实体名为NANDGATE。(2) NEXTSTATE := '0'改为NEXTSTATE := '1',这是因为一个数与0或、与1与可以保持不变,否则结果恒为1或0。(3) NEXTSTATE := INPUT(i) or NEX

3、TSTATE,改为NEXTSTATE := INPUT(i) and NEXTSTATE,实现与逻辑。(4) 增加NEXTSTATE := not NEXTSTATE语句,实现非逻辑。最终得到的模型程序见附录中表1。另外,可以从网上得到9值系统中与逻辑和非逻辑的真值表。在完成这个模型之后,通过对输入端赋不同的初值,并且对照真值表,我检查了模型的正确性。这里只在附录中给出相应的真值表,而不详细说明测试过程。进一步可以得到RS触发器结构的程序和测试程序,如附录中表4和表5所示。在说明测试得到的结果之前,首先对该RS触发器在题中要求下的输出结果进行分析如下:(1) 当两个与非门的延迟一样时,输出结果

4、是不能确定的;(2) 当两个与非门的延迟不一样时,若C1的延迟较短,则Y先由1变成0,进而导致Y保持1不变;反之亦然。推荐精选实际的仿真结果为(测试文件如表5所示): (1) 当把NANDGATE和NANDGATE_1的延时(tLH、tHL)均设置为0ns时,仿真时会出现错误提示“Error: (vsim-3601) Iteration limit reached at time 50 ns.”,这说明系统也无法判断输出的状态,相应的输出波形在输入第一次翻转时就停止了。(2) 当把NANDGATE和NANDGATE_1的延时(tLH、tHL)均设置为5ns时,输入翻转后5ns,Q和Q均为0,再

5、经过5ns后都变为1。比较有意思的是,Q和Q均进行周期为10ns的振荡。这也说明,此时的输出结果是无法确定的。(3) 分别把NANDGATE和NANDGATE_1的延时设置为5ns和10ns,则输入翻转后的输出结果为Q=0和NQ=1,也就是说y=0和y=1。可以看到仿真结果与理论分析基本一致,仿真得到的波形分别如图1、图2和图3所示。图1 延时为0时仿真结果推荐精选图2 延时均为5ns时的仿真结果图3 延时不同时的仿真结果2. Simulate this circuit (Figure 7.60) at transistor-level.Solution:下面用HSPICE来对RS触发器进行晶

6、体管级的电路仿真,其中仿真程序如表6所示。主要的仿真结果有:(1) 当两个与非门的参数完全一样时,输入翻转后,虽然可以得到输出,但输出状态也不是完全确定的,结果如图4所示。但第一次翻转后输出状态可以确定,它与表6中的电压源V1和V2的顺序有关。当V1在前时,仿真会有警告“warning* (c:spice_projecthw2rsrsff.sp:16) dc voltage reset to initial transient source value in source 0:v1 new dc=0.0000D+00”,这说明V1重新被初始化了,相当于V2会有延迟,因而C2的R先到达,故得到的

7、结果是Q=1和NQ=0。但经过几次翻转之后,却可以得到Q=0和NQ=1。我觉得这与V1和V2的时序有关,也就是说,虽然程序中二者的时序完全一样,但仿真软件并不认为是二者完全一样,一开始是V2的上升沿在前,但经过一段时间后可能变成V1的上升沿在前,从而出现了图4中的仿真结果。(2) 为了使两个与非门的延迟参数不同,让C1中的NMOS宽度加倍,这样可以使它的tHL减小,这是因为尺寸使电流大大增加了。因而Q会先变为0,而NQ变为1。仿真结果如图5,理论分析完全一致。此时的仿真结果与V1和V2的顺序无关。推荐精选图4 参数相同时的仿真结果图5 参数不同时的仿真结果通过以上两种仿真分析,可以看得到实验结

8、果与预期基本一致。这一方面说明了理论分析的重要性;另一方面,也证明了仿真工具的可靠性。另外,也可以看到晶体管级的仿真比行为级的仿真更为复杂。推荐精选附录表1 NANDGATE模型-Primitive name: NANDGATE-Purpose: An OR gate for multiple value logic STD_LOGIC,- N inputs, 1 output.-(see package IEEE.STD_LOGIC_1164 for truth table)-library IEEE;use IEEE.STD_LOGIC_1164.all;use IEEE.STD_LOGI

9、C_MISC.all;entity NANDGATE is generic (N: Positive := 2;- number of inputs tLH: Time := 0 ns; - rise inertial delay tHL: Time := 0 ns; - fall inertial delay STRN: STRENGTH := STRN_X01);- output strength port (INPUT: in STD_LOGIC_VECTOR (1 to N);- inputs OUTPUT: out STD_LOGIC); - outputend NANDGATE;

10、architecture A of NANDGATE is signal CURRENTSTATE: STD_LOGIC := 'U'- Signal CURRENTSTATE is the value of the OR function- the last time a scheduled output change occurred. subtype TWOBIT is STD_LOGIC_VECTOR (0 to 1);begin P: process variable NEXTSTATE: STD_LOGIC; - the new value variable DEL

11、TA: Time; variable NEXT_ASSIGN_VAL: STD_LOGIC; - the old value begin - evaluate logical function NEXTSTATE := '1' for i in INPUT'range loop NEXTSTATE := INPUT(i) and NEXTSTATE; exit when NEXTSTATE = '0' end loop; - determine the output value by mapping NEXTSTATE := not NEXTSTATE;

12、 NEXTSTATE := STRENGTH_MAP(NEXTSTATE, STRN); if (NEXTSTATE /= NEXT_ASSIGN_VAL) then - compute delay case TWOBIT'(CURRENTSTATE & NEXTSTATE) is when "UU"|"UX"|"UZ"|"UW"|"U-"|"XU"|"XX"|"XZ"|"XW"|推荐精选 "

13、;X-"|"ZU"|"ZX"|"ZZ"|"ZW"|"Z-"|"WU"|"WX"|"WZ"| "WW"|"W-"|"-U"|"-X"|"-Z"|"-W"|"-"|"00"|"0L"| "LL"|"L0"|&quo

14、t;11"|"1H"|"HH"|"H1" => DELTA := 0 ns; when "U1"|"UH"|"X1"|"XH"|"Z1"|"ZH"|"W1"|"WH"|"-1"| "-H"|"0U"|"0X"|"01"|"0Z"|"0

15、W"|"0H"|"0-"|"LU"| "LX"|"L1"|"LZ"|"LW"|"LH"|"L-" => DELTA := tLH; when others => DELTA := tHL; end case; - assign new value after internal delay CURRENTSTATE <= NEXTSTATE after DELTA; OUTPUT <=

16、 NEXTSTATE after DELTA; NEXT_ASSIGN_VAL := NEXTSTATE; end if; - wait for signal changes wait on INPUT; end process P;end A;表2 与逻辑真值表- - truth table for "and" function CONSTANT and_table : stdlogic_table := ( - - - | U X 0 1 Z W L H - | | - - ( 'U', 'U', '0', 'U&

17、#39;, 'U', 'U', '0', 'U', 'U' ), - | U | ( 'U', 'X', '0', 'X', 'X', 'X', '0', 'X', 'X' ), - | X | ( '0', '0', '0', '0', '0', '0', '0'

18、;, '0', '0' ), - | 0 | ( 'U', 'X', '0', '1', 'X', 'X', '0', '1', 'X' ), - | 1 | ( 'U', 'X', '0', 'X', 'X', 'X', '0', 'X', 'X' ), - | Z | ( &

19、#39;U', 'X', '0', 'X', 'X', 'X', '0', 'X', 'X' ), - | W | ( '0', '0', '0', '0', '0', '0', '0', '0', '0' ), - | L | ( 'U', 'X', '0', '

20、;1', 'X', 'X', '0', '1', 'X' ), - | H | ( 'U', 'X', '0', 'X', 'X', 'X', '0', 'X', 'X' ) - | - | );表3 非逻辑真值表- - truth table for "not" function CONSTANT not_table: stdlogic_1d

21、:= - - - | U X 0 1 Z W L H - | 推荐精选 - - ( 'U', 'X', '1', '0', 'X', 'X', '1', '0', 'X' );表4 RS触发器结构library IEEE; use IEEE.std_logic_1164.all; use work.all; entity RSFF is port(R,S: in STD_LOGIC; Q,NQ: inout STD_LOGIC); end RSFF;a

22、rchitecture behavior of RSFF is component NANDGATE port (INPUT: in STD_LOGIC_VECTOR (1 to 2);- inputs OUTPUT: out STD_LOGIC); - output end component; component NANDGATE_1 port (INPUT: in STD_LOGIC_VECTOR (1 to 2);- inputs OUTPUT: out STD_LOGIC); - output end component;begin R1: NANDGATE port map(INP

23、UT(1)=> S,INPUT(2) => NQ,OUTPUT => Q); R2: NANDGATE_1 port map(INPUT(1)=> Q,INPUT(2) => R,OUTPUT => NQ);end behavior;表5 RS触发器仿真文件LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.numeric_std.ALL;use work.all; ENTITY rsff_tb IS END rsff_tb; ARCHITECTURE behavior OF rsff_tb IS COMP

24、ONENT RSFF port(R,S: in STD_LOGIC; Q,NQ: inout STD_LOGIC); END COMPONENT; SIGNAL R : STD_LOGIC:='0' SIGNAL S : STD_LOGIC:='0' SIGNAL Q : STD_LOGIC:='U' 推荐精选 SIGNAL NQ : STD_LOGIC:='U' BEGIN rs1: RSFF PORT MAP( R => R, S => S, Q => Q, NQ => NQ ); R<= not

25、 R after 50 ns; S<= not S after 50 ns; END;表6 HSPICE仿真程序.title Rsff.option NOMOD post.lib 'C:libsMM018.L' TT.global vddM0 Q S vdd vdd pch l=0.2u w=1uM1 Q NQ vdd vdd pch l=0.2u w=1uM2 Q S va 0 nch l=0.2u w=1uM3 va NQ 0 0 nch l=0.2u w=1uM4 NQ R vdd vdd pch l=0.2u w=1uM5 NQ Q vdd vdd pch l=0.2u w=1uM6 NQ R vb 0 nch l=0.2u w=1uM7 vb Q 0 0 nch l=0.2u w=1uV0 vdd 0 1.8VV1 S 0 Pulse(0 1.8 10ns 5ns 5ns 30ns 60ns)V2 R 0 Pulse(0 1.8 10ns 5ns 5ns 30ns 60ns).temp 27.OP.tran 1ps 500ns.end (注:可编辑下载,若有不当之处,请指正,谢谢!) 推荐精选

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1