在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于Verilog的開關級建模

CHANBAEK ? 來源:數字IC與好好生活的兩居室 ? 作者:除夕之夜啊 ? 2023-03-30 11:39 ? 次閱讀

開關級建模是比門級建模更為低級抽象層次上的設計。 在極少數情況下,設計者可能會選擇使用晶體管作為設計的底層模塊。 隨著電路設計復雜度及相關先進工具的出現,以開關為基礎的數字設計慢慢步入黃昏。 目前,Verilog 僅僅提供了用邏輯值 0、1、x、z 作為相關驅動強度的數字設計能力,因此,Verilog 中晶體管也僅被當做導通或截止的開關。

MOS 開關

MOS 開關有 2 種,用如下關鍵字聲明:

nmos(N 類型 MOS 管) pmos(P 類型 MOS 管)

rnmos (帶有高阻抗的 NMOS 管) rpmos(帶有高阻抗的 PMOS 管)

MOS 管用來為開關邏輯建模,數據從輸入流入輸出,可通過適當設置來開、關數據流。

帶有阻抗的 MOS 管,源極到漏極的阻抗較高,且在傳遞信號時會減小信號的強度。

MOS 管開關結構圖如下所示。

圖片

例化時,MOS 管第一個端口為輸出端,第二個端口為數據輸入端,第三個端口為控制輸入端。

//tri
   pmos pmos1           (OUTX, IN1, CTRL1) ;
   //no instantiation name
   nmos                 (OUTX1, IN1, CTRL2) ;

MOS 管真值表如下所示,與三態門非常相似。

NMOS 控制端 PMOS 控制端
0 1 x 0
0 0 0/Z 0/Z
1 1 1/z 1/z
x x x x
x x x

CMOS 開關

CMOS 開關用關鍵字 cmos 和 rcmos (帶有高阻抗)聲明。

CMOS 有一個數據輸出,一個數據輸入和 2 個控制輸入,結構示意圖如下:

圖片

信號 PControl 與 Ncontrol 通常是互補的。 當信號 Ncontrol 為 1 且 PControl 為 0 時,開關導通。 當信號 Ncontrol 為 0 且 PControl 為 1 時,開關輸出為高阻。 可以將 CMOS 開關看做是 NMOS 與 PMOS 開關的組合體。

例化時,CMOS 管第一個端口為輸出端,第二個端口為數據輸入端,第三個端口為 Ncontrol 控制輸入端,第四個端口為 Pcontrol 控制輸入端。

CMOS 開關例化格式如下。

//coms
   cmos c1              (OUTY, IN1, NCTRL, PCTRL) ;
   //no instantiation name
   cmos                 (OUTY1, IN1, NCTRL, PCTRL) ;

既然 CMOS 可以看做是 NMOS 與 PMOS 開關的組合體,所以還可以用這兩種 MOS 開關去搭建 CMOS 開關,如下:

//the same 2-way instantiation of cmos
   nmos n2              (OUTY, IN1, NCTRL) ;
   pmos p2              (OUTY, IN1, PCTRL) ;

CMOS 真值表與 MOS 開關類似,注意 Ncontrol 與 Pcontrol 信號的互補性。

雙向開關

NMOS、PMOS、CMOS 開關門都是從漏極向源極導通,方向是單向的。 Verilog 中還提供了雙向導通的開關器件,數據可以雙向流動,兩邊的信號都可以是驅動信號。

雙向開關及其阻抗模式的關鍵字聲明如下:

Tran tranif1 tranif0 rtran rtranif1 rtranif0

雙向開關結構圖如下:

圖片

tran 開關為兩個信號直接的緩存,inout1 或 inout2 均可以是驅動信號。

tranif1 僅當 control 信號為 1 時,開關兩邊的信號導通。 當 control 為 0 時,兩個信號斷開,有驅動源的信號會和驅動源保持一致的信號值,沒有驅動源的信號則呈現為高阻狀態。

tranif0 同理。

因此,雙向開關常用來進行總線或信號之間的隔離。

例化時,雙向開關前兩個端口為數據端,第三個端口為 control 控制輸入端。

雙向開關例化舉例如下:

tranif0 tr0              (inout1, inout2, control) ;
   //no instantiation name
   tranif1                  (inout1, inout2, control) ;

電源和地

晶體管級電路需要源極(Vdd, 邏輯 1)與地極(Vss, 邏輯 0),分別用關鍵字

supply1 和 supply0 來定義。用法如下:
   supply1              VDD ;
   supply0              GND ;
   wire                 siga = VDD ; //siga is connected to logic 1
   wire                 sigb = GND ; //sign is connected to logic 0

PAD 模型仿真

在《Verilog 教程》的《5.1 Verilog 模塊與端口》一節中,涉及過 PAD 模型的編寫與仿真。 下面,利用三態門對 PAD 模型進行重塑,上下拉功能固定,并利用雙向開關對 PAD 連接性進行測試。

利用三態門編寫的帶有 pullup 功能的 pad 模型如下,pulldown 功能的 pad 模型切換下注釋即可。

module PADUP(
   //DIN, pad driver when pad configured as output
   //OEN, pad direction(1-input, o-output)
   input        DIN, OEN ,
   inout        PAD ,
   //pad load when pad configured as input
   output       DOUT
  );
   //input:(not effect pad external input logic), output: DIN->PAD
   bufif0 (PAD, DIN, OEN) ;     //0-output
   bufif1 (DOUT, PAD, OEN) ;    //1-input
   pullup (PAD);
   //pulldown (PAD);   //pulldown
endmodule

利用雙向開關控制 PAD IO 連接性的 testbench 編寫如下。

測試流程為 PAD0/1 互連,然后 PAD0 作為輸出,PAD1 作為輸入,驅動 PAD0, 讀取 PAD1 的值。 然后兩者方向各自取反,驅動 PAD1 讀取 PAD0 的值。

PAD2/3 測試過程完全一樣。

`timescale 1ns/1ns
module test ;
   parameter    PULL_UP         = 1 ;
   parameter    PULL_DOWN       = 0 ;
   parameter    IO0_OUT         = 0 ;
   parameter    IO1_OUT         = 1 ;
   parameter    IO2_OUT         = 2 ;
   parameter    IO3_OUT         = 3 ;
   parameter    IO0_IN          = 0 ;
   parameter    IO1_IN          = 1 ;
   parameter    IO2_IN          = 2 ;
   parameter    IO3_IN          = 3 ;


   reg [3:0]    DIN, OEN ;
   wire [3:0]   DOUT ;
   wire [3:0]   PAD ;


   //test connection control, using tranif1
   reg [1:0]    con_ena ;
   tranif1 (PAD[0], PAD[1], con_ena[0]);
   tranif1 (PAD[2], PAD[3], con_ena[1]);


   reg err = 0;
   task test_io_conn;
      //test pull
      input             pull_type ;
      //test conn
      input [1:0]       xout ;     //output postion
      input [1:0]       yin ;     //output postion


      DIN[xout]         = ~pull_type ;
      # 20 ;
      if (DOUT[yin] != ~pull_type) begin
         $display("write value and get value is: %h, %h", ~pull_type, DOUT[yin]);
         err        |= 1 ;
      end


      DIN[xout]         = pull_type;
      # 20 ;
      if (DOUT[yin] != pull_type) begin
         $display("write value and get value is: %h, %h", pull_type, DOUT[yin]);
         err        |= 1 ;
      end
   endtask


   initial begin
      con_ena   = 2'b01 ;
      OEN       = 4'b1111 ;
      #13 ;
      //test between io0/io1
      OEN[0]    = 0 ;
      OEN[1]    = 1 ; //gpio0 -> gpio1
      test_io_conn(PULL_UP, IO0_OUT, IO1_IN);
      OEN[1]    = 0 ;
      OEN[0]    = 1 ; //gpio0 -> gpio1
      test_io_conn(PULL_UP, IO1_OUT, IO0_IN);
      OEN       = 4'b1111 ;
      con_ena   = 2'b10 ;
      OEN[2]    = 1'b0 ;
      OEN[3]    = 1'b1 ;
      test_io_conn(PULL_DOWN, IO2_OUT, IO3_IN);
      OEN[3]    = 1'b0 ;
      OEN[2]    = 1'b1 ;
      test_io_conn(PULL_DOWN, IO3_OUT, IO2_IN);
   end


   PADUP        u_pad_up0( DIN[0], OEN[0], PAD[0], DOUT[0]) ;
   PADUP        u_pad_up1( DIN[1], OEN[1], PAD[1], DOUT[1]) ;
   PADDOWN      u_pad_down3( DIN[2], OEN[2], PAD[2], DOUT[2]) ;
   PADDOWN      u_pad_down4( DIN[3], OEN[3], PAD[3], DOUT[3]) ;


   initial begin
      forever begin
         #100;
         //$display("---gyc---%d", $time);
         if ($time >= 1000) begin
            $finish ;
         end
      end
   end


endmodule

仿真結果如下。

由圖可知,13ns 之內,4 個 PAD 均為輸入時,PAD 值均與 pull 功能對應,即 PAD0-1 均有上拉功能,PAD2-3 均有下拉功能。

13-53ns 之內,PAD0 作為輸出,PAD1 作為輸入,并且相連,兩者的邏輯值變化一致。 同理,53ns-93ns 之內,PAD1 作為輸出,PAD0 作為輸入, 相連狀態下兩者邏輯值也是一致的。 這說明 PAD0/1 的輸入輸出功能都是正常的。

PAD2/3 結果也類似,這里不再做說明。

圖片

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 開關
    +關注

    關注

    19

    文章

    3151

    瀏覽量

    93948
  • 電路設計
    +關注

    關注

    6678

    文章

    2466

    瀏覽量

    205465
  • 信號
    +關注

    關注

    11

    文章

    2808

    瀏覽量

    77159
  • Verilog
    +關注

    關注

    28

    文章

    1352

    瀏覽量

    110443
  • MOS
    MOS
    +關注

    關注

    32

    文章

    1287

    瀏覽量

    94385
收藏 人收藏

    評論

    相關推薦

    【小白入門筆記】 小腳丫實現38譯碼器——模塊建模和門建模初探

    verilog HDL建模分三種方式:1、模塊建模2、門建模3、開關
    發表于 09-16 21:35

    Verilog HDL教程(共172頁pdf電子書下載)

    語言,用于從算法、門開關的多種抽象設計層次的數字系統建模。被建模的數字系統對象的復雜性可
    發表于 07-03 05:19

    【FPGA學習】Verilog HDL有哪些特點

    Verilog HDL 之所以成為和 VHDL 并駕齊驅的硬件描述語言,是因為它具有如下特點:? 基本邏輯門和開關基本結構模型都內置在語言中;? 可采用多種方式對設計建模,這些方式
    發表于 09-18 09:33

    【FPGA學習】Verilog HDL 語言的描述語句之門建模形式

    建模形式Verilog HDL 中可以使用內置基本門來進行硬件描述。Verilog HDL 中提供下列內置基本門:? 多輸入門 and(與門)、nand(與非門)、or(或門)、n
    發表于 09-20 09:28

    Verilog HDL入門教程(全集)

    本帖最后由 IC那些事兒 于 2020-11-30 19:05 編輯 Verilog HDL是一種硬件描述語言,用于從算法、門開關
    發表于 11-30 19:03

    verilog_a怎么進行建模?怎么去表征PLL每個子模塊的噪聲?

    鎖相環行為建模方面有所了解的人可以給我提供一些幫助,現在我也急需解決這個問題,比如用MATLAB,verilog_a怎么進行建模,怎么把噪聲也考慮進去,我都不知道,我平時一般使用AD
    發表于 06-25 07:16

    什么是Verilog HDL?

    什么是Verilog HDL? Verilog HDL是一種硬件描述語言,用于從算法、門開關
    發表于 01-18 14:53 ?4196次閱讀
    什么是<b class='flag-5'>Verilog</b> HDL?

    Verilog HDL硬件描述語言_結構建模

    本章講述Verilog HDL中的結構建模方式。結構建模方式用以下三種實例語句描述,verilog相關教程材料,有興趣的同學可以下載學習。
    發表于 04-25 14:58 ?14次下載

    Verilog HDL硬件描述語言_行為建模

    本章描述Verilog HDL中的第三種建模方式,即行為建模方式。為充分使用Verilog HDL,一個模型可以包含所有上述三種建模方式。
    發表于 04-25 16:09 ?14次下載

    Verilog HDL硬件描述語言_建模實例

    本章給出了一些用Verilog HDL編寫的硬件建模實例。verilog相關教程材料,有興趣的同學可以下載學習
    發表于 04-25 16:09 ?25次下載

    Verilog HDL簡明教程(part1)

    Verilog HDL是一種硬件描述語言,用于從算法、門開關的多種抽象設計層次的數字系統建模
    發表于 02-11 16:57 ?1282次閱讀

    正點原子開拓者FPGA視頻:Verilog基礎語法

      Verilog HDL是一種硬件描述語言,用于從算法、門開關的多種抽象設計層次的數字系統建模
    的頭像 發表于 09-19 07:04 ?1819次閱讀
    正點原子開拓者FPGA視頻:<b class='flag-5'>Verilog</b>基礎語法

    課程4:Verilog語法基礎

    Verilog HDL是一種硬件描述語言,用于從算法、門開關的多種抽象設計層次的數字系統建模
    的頭像 發表于 12-23 07:08 ?2649次閱讀
    課程4:<b class='flag-5'>Verilog</b>語法基礎

    使用Verilog HDL實現數字時鐘設計的詳細資料說明

    Verilog HDL是一種硬件描述語言,用于從算法、門開關的多種抽象設計層次的數字系統建模
    發表于 07-24 17:55 ?30次下載
    使用<b class='flag-5'>Verilog</b> HDL實現數字時鐘設計的詳細資料說明

    Verilog HDL為門電路建模的能力詳解

    門電平模型化 本章講述Verilog HDL為門電路建模的能力,包括可以使用的內置基本門和如何使用它們來進行硬件描述。 5.1 內置基本門 Verilog HDL中提供下列內置基本門
    的頭像 發表于 03-05 15:23 ?6581次閱讀
    <b class='flag-5'>Verilog</b> HDL為門<b class='flag-5'>級</b>電路<b class='flag-5'>建模</b>的能力詳解
    主站蜘蛛池模板: 操欧美女人| 天天综合天天看夜夜添狠狠玩 | 国产黄视频网站 | 国产黄色大片网站 | 性夜影院午夜看片 | 性做久久久久久久免费观看 | 亚洲人成a在线网站 | 人人艹在线视频 | 午夜湿影院 | 噜噜噜久久 | 2021国产精品久久 | 欧美亚洲第一区 | 九九热精品视频在线播放 | 欧美18性欧美丶黑吊 | 男人视频在线 | 好男人午夜| 最新在线网址 | 天堂资源8中文最新版在线 天堂资源地址在线 | 人人骚| 性欧美黑人xxxx | 成人a毛片在线看免费全部播放 | 亚洲性人人天天夜夜摸 | 免费人成在线观看网站品爱网 | 国产在线播放你懂的 | 亚洲ay| 午夜免费视频观看在线播放 | 亚洲日本久久久午夜精品 | 免费国产不卡午夜福在线 | 欧美色图综合网 | 午夜在线播放视频 | 在线观看www妖精免费福利视频 | 国产美女特级嫩嫩嫩bbb | www.av在线.com| 女性私密部位扒开的视频 | 中文字幕亚洲天堂 | 奇米99| 天天精品视频在线观看资源 | 夜夜嗷| 亚洲视频在线观看一区 | 69女poren18中国| 看日本黄大片在线观看 |