首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用结构vhdl的NAND碱性细胞

使用结构vhdl的NAND碱性细胞
EN

Stack Overflow用户
提问于 2013-05-06 05:17:21
回答 1查看 3.6K关注 0票数 0

我在用VHDL设计存储器电路时遇到了问题。我试图找出以下提示的解决办法:

使用结构化VHDL方法在Xilinx工具中创建一个NAND基本单元。在两个NAND门上增加一个1ns的门延迟(对于上升和下降的转换)。标签输入S和R以及输出Q和QN (视情况而定)。创建一个VHDL测试平台来模拟电路,驱动输入,如下所示。

在模拟开始时,这两种输入都被取消断言.在100 S.,资产S.在200 S.,去断言S.在300 S.,断言R.在400 S.,.在500 S.,断言两种输入。在600 At时,两种输入都去断言。在700 At时,断言这两种输入。

  1. 未定义的输出
  2. 集运算
  3. 复位操作
  4. 存储在内存中的“0”
  5. 存储在内存中的“1”
  6. Q和QN输出都被驱动到相同值的状态。
  7. 亚稳态

如果我能得到代码的基本示例,我也可以设计一个NOR电路(这是我希望解决的实际问题),但是一个NAND示例就足够了。

我尝试过将这个模型用于结构代码。

代码语言:javascript
复制
 import std_logic from the IEEE library
    library ieee;
    use ieee.std_logic_1164.all;

    --ENTITY DECLARATION: name, inputs, outputs
    entity nandGate is
       port( A, B : in std_logic;
                F : out std_logic);
    end nandGate;

    --FUNCTIONAL DESCRIPTION: how the NAND Gate works
    architecture func of nandGate is 
    begin
       F <= A nand B;
    end func;

and this model for the test bench 



 architecture tb of nandGate_tb is
       --pass nandGate entity to the testbench as component 
       component nandGate is
       port( A, B : in std_logic;
                F : out std_logic);
       end component;

       signal  inA, inB, outF : std_logic;
    begin
       --map the testbench signals to the ports of the nandGate
       mapping: nandGate port map(inA, inB, outF);

       process
          --variable to track errors
          variable errCnt : integer := 0;
       begin
          --TEST 1
          inA <= '0';
          inB <= '0';
          wait for 15 ns;
          assert(outF = '1')  report "Error 1" severity error;
          if(outF /= '1') then
             errCnt := errCnt + 1;
          end if;

          --TEST 2
          inA <= '0';
          inB <= '1';
          wait for 15 ns;
          assert(outF = '1')  report "Error 2" severity error;
          if(outF /= '1') then
             errCnt := errCnt + 1;
          end if;

          --TEST 3
          inA <= '1';
          inB <= '1';
          wait for 15 ns;
          assert(outF = '0')  report "Error 3" severity error;
          if(outF /= '0') then
             errCnt := errCnt + 1;
          end if;

          -------------- SUMMARY -------------
          if(errCnt = 0) then
             assert false report "Good!"  severity note;
          else
             assert true report "Error!"  severity error;
          end if;

       end process;
    end tb;
EN

回答 1

Stack Overflow用户

发布于 2013-10-07 03:36:16

问题是要求您从一对交叉耦合的NAND门创建一个SR锁存器(在指令中称为NAND基本单元)。所述延迟将在NAND门的功能描述的逻辑方程中。

以下是由两个NAND门组成的SR锁存器的结构VHDL模型:

代码语言:javascript
复制
entity nandCell is
   port( S, R  : in std_logic; --S and R are active low
         Q, QN : out std_logic);
end nandCell;

architecture structural of nandCell is 
   --NAND gate component declaration
   signal Qint, QNint : std_logic; --these internal signals are required to be able to read the "outputs"
begin
   n1 : nandGate port map(S, QNint, Qint);
   n2 : nandGate port map(R, Qint, QNint);
   Q <= Qint;
   QN <= QNint;
end structural;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16392344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档