与非门实例

组合逻辑 UDP 中,状态表规定了不同的输入组合和相对应的输出值,没有指定的任意组合输出值为 x。

一个简单的与非门 UDP 可以表示如下:

primitive nand_my(out, a, b);
   output       out ;
   input        a, b ;

   table
    //a         b       :       out ;
      0         0       :       1 ;
      0         1       :       1 ;
      1         0       :       1 ;
      1         1       :       0 ;
   endtable
endprimitive

如上一节所阐述,端口列表和声明部分可以改为:

primitive nand_my(
  output       out,
  input        a, b);
  ……
endprimitive

状态表项

表示组合逻辑的状态表中的每一行的语法格式如下:

  ...    :   ;
  • 1、状态表中的 input 信号顺序要与 UDP 端口列表的顺序一致。
  • 2、输入和输出用冒号 : 隔开。
  • 3、状态表的每一行以分号 ; 结束。
  • 4、能够产生确定输出值的所有输入项的组合都必须在状态表中列出,否则会输出 x 值。

例如在上述 UDP nand_my 中,如果 a=0, b=x,则输出 out = x ,因为该组合选项在 table 中无法找到。所以在编写 UDP 时,要完整的考虑输入的所有组合情况。

UDP nand_my 的状态表可以修改为:

   table
    //a         b       :       out ;
      0         0       :       1 ;
      0         1       :       1 ;
      1         0       :       1 ;
      1         1       :       0 ;

      0         x       :       1 ;
      x         0       :       1 ;
   endtable

无关项

UDP nand_my 中,当 a 或 b 两个输入只要有一个为 0 时,则输出为 1。

不影响输出结果的输入信号为无关项,可以用问号”?”来表示。状态表中的”?”项将自动展开为 0, 1 或 x。

因此 UDP nand_my 的状态表可以改为:

   table
    //a         b       :       out ;
      0         ?       :       1 ;
      ?         0       :       1 ;
      1         1       :       0 ;

      //下面组合将输出 x,所以也可以省略,Verilog 默认会输出 x
      1         x       :       x ;
      x         1       :       x ;
   endtable

UDP 例化

UDP 调用格式与内置门级原语完全一致。

利用上述 UDP nand_my 完成《1.3 门延迟》中 D 触发器的仿真。

去除延迟信息,D 触发器模型如下。

实例

module D_TRI(
            input       D, CP,
            output      Q, QR);

   //part1, not gate
   wire         CPN, DN ;
   not          (CPN, CP);
   not          (DN, D);

   //part2, master trigger
   wire         G3O, G4O ;
   nand_my      (G3O, D, CP);
   nand_my      (G4O, DN, CP);
   wire         G1O, G2O ;
   nand_my      (G1O, G3O, G2O);
   nand_my      (G2O, G4O, G1O);

   //part3, slave trigger
   wire         G7O, G8O ;
   nand_my      (G7O, G1O, CPN);
   nand_my      (G8O, G2O, CPN);
   wire         G5O, G6O ;
   nand_my      (G5O, G7O, G6O);
   nand_my      (G6O, G8O, G5O);

   assign       Q = G5O ;
   assign       QR = G6O ;

endmodule

testbench 保持不变,仿真结果如下。

由图可知,触发器在时钟 CP 下降沿采集到了 D 端信号,并传递给 Q/QR ,在单周期内保持不变。

UDP 完成的与非门功能正确。

本章节源码下载

Download

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
  1. 免费下载或者VIP会员资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
  2. 提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或联络我们。
  3. 找不到素材资源介绍文章里的示例图片?
    对于会员专享、整站源码、程序插件、网站模板、网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
  4. 付款后无法显示下载地址或者无法查看内容?
    如果您已经成功付款但是网站没有弹出成功提示,请联系站长提供付款信息为您处理
  5. 购买该资源后,可以退款吗?
    源码素材属于虚拟商品,具有可复制性,可传播性,一旦授予,不接受任何形式的退款、换货要求。请您在购买获取之前确认好 是您所需要的资源

评论(0)

提示:请文明发言