日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Verilog的開(kāi)關(guān)級(jí)建模

CHANBAEK ? 來(lái)源:數(shù)字IC與好好生活的兩居室 ? 作者:除夕之夜啊 ? 2023-03-30 11:39 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

開(kāi)關(guān)級(jí)建模是比門(mén)級(jí)建模更為低級(jí)抽象層次上的設(shè)計(jì)。 在極少數(shù)情況下,設(shè)計(jì)者可能會(huì)選擇使用晶體管作為設(shè)計(jì)的底層模塊。 隨著電路設(shè)計(jì)復(fù)雜度及相關(guān)先進(jìn)工具的出現(xiàn),以開(kāi)關(guān)為基礎(chǔ)的數(shù)字設(shè)計(jì)慢慢步入黃昏。 目前,Verilog 僅僅提供了用邏輯值 0、1、x、z 作為相關(guān)驅(qū)動(dòng)強(qiáng)度的數(shù)字設(shè)計(jì)能力,因此,Verilog 中晶體管也僅被當(dāng)做導(dǎo)通或截止的開(kāi)關(guān)。

MOS 開(kāi)關(guān)

MOS 開(kāi)關(guān)有 2 種,用如下關(guān)鍵字聲明:

nmos(N 類(lèi)型 MOS 管) pmos(P 類(lèi)型 MOS 管)

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

MOS 管用來(lái)為開(kāi)關(guān)邏輯建模,數(shù)據(jù)從輸入流入輸出,可通過(guò)適當(dāng)設(shè)置來(lái)開(kāi)、關(guān)數(shù)據(jù)流。

帶有阻抗的 MOS 管,源極到漏極的阻抗較高,且在傳遞信號(hào)時(shí)會(huì)減小信號(hào)的強(qiáng)度。

MOS 管開(kāi)關(guān)結(jié)構(gòu)圖如下所示。

圖片

例化時(shí),MOS 管第一個(gè)端口為輸出端,第二個(gè)端口為數(shù)據(jù)輸入端,第三個(gè)端口為控制輸入端。

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

MOS 管真值表如下所示,與三態(tài)門(mén)非常相似。

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 開(kāi)關(guān)

CMOS 開(kāi)關(guān)用關(guān)鍵字 cmos 和 rcmos (帶有高阻抗)聲明。

CMOS 有一個(gè)數(shù)據(jù)輸出,一個(gè)數(shù)據(jù)輸入和 2 個(gè)控制輸入,結(jié)構(gòu)示意圖如下:

圖片

信號(hào) PControl 與 Ncontrol 通常是互補(bǔ)的。 當(dāng)信號(hào) Ncontrol 為 1 且 PControl 為 0 時(shí),開(kāi)關(guān)導(dǎo)通。 當(dāng)信號(hào) Ncontrol 為 0 且 PControl 為 1 時(shí),開(kāi)關(guān)輸出為高阻。 可以將 CMOS 開(kāi)關(guān)看做是 NMOS 與 PMOS 開(kāi)關(guān)的組合體。

例化時(shí),CMOS 管第一個(gè)端口為輸出端,第二個(gè)端口為數(shù)據(jù)輸入端,第三個(gè)端口為 Ncontrol 控制輸入端,第四個(gè)端口為 Pcontrol 控制輸入端。

CMOS 開(kāi)關(guān)例化格式如下。

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

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

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

CMOS 真值表與 MOS 開(kāi)關(guān)類(lèi)似,注意 Ncontrol 與 Pcontrol 信號(hào)的互補(bǔ)性。

雙向開(kāi)關(guān)

NMOS、PMOS、CMOS 開(kāi)關(guān)門(mén)都是從漏極向源極導(dǎo)通,方向是單向的。 Verilog 中還提供了雙向?qū)ǖ拈_(kāi)關(guān)器件,數(shù)據(jù)可以雙向流動(dòng),兩邊的信號(hào)都可以是驅(qū)動(dòng)信號(hào)。

雙向開(kāi)關(guān)及其阻抗模式的關(guān)鍵字聲明如下:

Tran tranif1 tranif0 rtran rtranif1 rtranif0

雙向開(kāi)關(guān)結(jié)構(gòu)圖如下:

圖片

tran 開(kāi)關(guān)為兩個(gè)信號(hào)直接的緩存,inout1 或 inout2 均可以是驅(qū)動(dòng)信號(hào)。

tranif1 僅當(dāng) control 信號(hào)為 1 時(shí),開(kāi)關(guān)兩邊的信號(hào)導(dǎo)通。 當(dāng) control 為 0 時(shí),兩個(gè)信號(hào)斷開(kāi),有驅(qū)動(dòng)源的信號(hào)會(huì)和驅(qū)動(dòng)源保持一致的信號(hào)值,沒(méi)有驅(qū)動(dòng)源的信號(hào)則呈現(xiàn)為高阻狀態(tài)。

tranif0 同理。

因此,雙向開(kāi)關(guān)常用來(lái)進(jìn)行總線或信號(hào)之間的隔離。

例化時(shí),雙向開(kāi)關(guān)前兩個(gè)端口為數(shù)據(jù)端,第三個(gè)端口為 control 控制輸入端。

雙向開(kāi)關(guān)例化舉例如下:

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

電源和地

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

supply1 和 supply0 來(lái)定義。用法如下:
   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 模塊與端口》一節(jié)中,涉及過(guò) PAD 模型的編寫(xiě)與仿真。 下面,利用三態(tài)門(mén)對(duì) PAD 模型進(jìn)行重塑,上下拉功能固定,并利用雙向開(kāi)關(guān)對(duì) PAD 連接性進(jìn)行測(cè)試。

利用三態(tài)門(mén)編寫(xiě)的帶有 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

利用雙向開(kāi)關(guān)控制 PAD IO 連接性的 testbench 編寫(xiě)如下。

測(cè)試流程為 PAD0/1 互連,然后 PAD0 作為輸出,PAD1 作為輸入,驅(qū)動(dòng) PAD0, 讀取 PAD1 的值。 然后兩者方向各自取反,驅(qū)動(dòng) PAD1 讀取 PAD0 的值。

PAD2/3 測(cè)試過(guò)程完全一樣。

`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

仿真結(jié)果如下。

由圖可知,13ns 之內(nèi),4 個(gè) PAD 均為輸入時(shí),PAD 值均與 pull 功能對(duì)應(yīng),即 PAD0-1 均有上拉功能,PAD2-3 均有下拉功能。

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

PAD2/3 結(jié)果也類(lèi)似,這里不再做說(shuō)明。

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 開(kāi)關(guān)
    +關(guān)注

    關(guān)注

    20

    文章

    3322

    瀏覽量

    98497
  • 電路設(shè)計(jì)
    +關(guān)注

    關(guān)注

    6746

    文章

    2800

    瀏覽量

    220380
  • 信號(hào)
    +關(guān)注

    關(guān)注

    12

    文章

    2936

    瀏覽量

    80429
  • Verilog
    +關(guān)注

    關(guān)注

    31

    文章

    1374

    瀏覽量

    114736
  • MOS
    MOS
    +關(guān)注

    關(guān)注

    32

    文章

    1764

    瀏覽量

    101273
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    【小白入門(mén)筆記】 小腳丫實(shí)現(xiàn)38譯碼器——模塊建模和門(mén)級(jí)建模初探

    verilog HDL建模分三種方式:1、模塊建模2、門(mén)級(jí)建模3、開(kāi)關(guān)
    發(fā)表于 09-16 21:35

    Verilog HDL教程(共172頁(yè)pdf電子書(shū)下載)

    語(yǔ)言,用于從算法級(jí)、門(mén)級(jí)開(kāi)關(guān)級(jí)的多種抽象設(shè)計(jì)層次的數(shù)字系統(tǒng)建模。被建模的數(shù)字系統(tǒng)對(duì)象的復(fù)雜性可
    發(fā)表于 07-03 05:19

    【FPGA學(xué)習(xí)】Verilog HDL有哪些特點(diǎn)

    。Verilog HDL 之所以成為和 VHDL 并駕齊驅(qū)的硬件描述語(yǔ)言,是因?yàn)樗哂腥缦绿攸c(diǎn):? 基本邏輯門(mén)和開(kāi)關(guān)級(jí)基本結(jié)構(gòu)模型都內(nèi)置在語(yǔ)言中;? 可采用多種方式對(duì)設(shè)計(jì)建模,這些方式
    發(fā)表于 09-18 09:33

    【FPGA學(xué)習(xí)】Verilog HDL 語(yǔ)言的描述語(yǔ)句之門(mén)級(jí)建模形式

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

    Verilog HDL入門(mén)教程(全集)

    本帖最后由 IC那些事兒 于 2020-11-30 19:05 編輯 Verilog HDL是一種硬件描述語(yǔ)言,用于從算法級(jí)、門(mén)級(jí)開(kāi)關(guān)級(jí)
    發(fā)表于 11-30 19:03

    verilog_a怎么進(jìn)行建模?怎么去表征PLL每個(gè)子模塊的噪聲?

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

    什么是Verilog HDL?

    什么是Verilog HDL? Verilog HDL是一種硬件描述語(yǔ)言,用于從算法級(jí)、門(mén)級(jí)開(kāi)關(guān)級(jí)
    發(fā)表于 01-18 14:53 ?4637次閱讀
    什么是<b class='flag-5'>Verilog</b> HDL?

    Verilog HDL硬件描述語(yǔ)言_結(jié)構(gòu)建模

    本章講述Verilog HDL中的結(jié)構(gòu)建模方式。結(jié)構(gòu)建模方式用以下三種實(shí)例語(yǔ)句描述,verilog相關(guān)教程材料,有興趣的同學(xué)可以下載學(xué)習(xí)。
    發(fā)表于 04-25 14:58 ?14次下載

    Verilog HDL硬件描述語(yǔ)言_行為建模

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

    Verilog HDL硬件描述語(yǔ)言_建模實(shí)例

    本章給出了一些用Verilog HDL編寫(xiě)的硬件建模實(shí)例。verilog相關(guān)教程材料,有興趣的同學(xué)可以下載學(xué)習(xí)
    發(fā)表于 04-25 16:09 ?25次下載

    Verilog HDL簡(jiǎn)明教程(part1)

    Verilog HDL是一種硬件描述語(yǔ)言,用于從算法級(jí)、門(mén)級(jí)開(kāi)關(guān)級(jí)的多種抽象設(shè)計(jì)層次的數(shù)字系統(tǒng)建模
    發(fā)表于 02-11 16:57 ?1561次閱讀

    正點(diǎn)原子開(kāi)拓者FPGA視頻:Verilog基礎(chǔ)語(yǔ)法

      Verilog HDL是一種硬件描述語(yǔ)言,用于從算法級(jí)、門(mén)級(jí)開(kāi)關(guān)級(jí)的多種抽象設(shè)計(jì)層次的數(shù)字系統(tǒng)建模
    的頭像 發(fā)表于 09-19 07:04 ?2369次閱讀
    正點(diǎn)原子開(kāi)拓者FPGA視頻:<b class='flag-5'>Verilog</b>基礎(chǔ)語(yǔ)法

    課程4:Verilog語(yǔ)法基礎(chǔ)

    Verilog HDL是一種硬件描述語(yǔ)言,用于從算法級(jí)、門(mén)級(jí)開(kāi)關(guān)級(jí)的多種抽象設(shè)計(jì)層次的數(shù)字系統(tǒng)建模
    的頭像 發(fā)表于 12-23 07:08 ?3186次閱讀
    課程4:<b class='flag-5'>Verilog</b>語(yǔ)法基礎(chǔ)

    使用Verilog HDL實(shí)現(xiàn)數(shù)字時(shí)鐘設(shè)計(jì)的詳細(xì)資料說(shuō)明

    Verilog HDL是一種硬件描述語(yǔ)言,用于從算法級(jí)、門(mén)級(jí)開(kāi)關(guān)級(jí)的多種抽象設(shè)計(jì)層次的數(shù)字系統(tǒng)建模
    發(fā)表于 07-24 17:55 ?30次下載
    使用<b class='flag-5'>Verilog</b> HDL實(shí)現(xiàn)數(shù)字時(shí)鐘設(shè)計(jì)的詳細(xì)資料說(shuō)明

    Verilog HDL為門(mén)級(jí)電路建模的能力詳解

    門(mén)電平模型化 本章講述Verilog HDL為門(mén)級(jí)電路建模的能力,包括可以使用的內(nèi)置基本門(mén)和如何使用它們來(lái)進(jìn)行硬件描述。 5.1 內(nèi)置基本門(mén) Verilog HDL中提供下列內(nèi)置基本門(mén)
    的頭像 發(fā)表于 03-05 15:23 ?7779次閱讀
    <b class='flag-5'>Verilog</b> HDL為門(mén)<b class='flag-5'>級(jí)</b>電路<b class='flag-5'>建模</b>的能力詳解
    永川市| 平泉县| 循化| 镶黄旗| 东乌珠穆沁旗| 吴江市| 定兴县| 石城县| 靖宇县| 美姑县| 灵台县| 日喀则市| 垫江县| 中西区| 乐昌市| 金阳县| 宁安市| 富宁县| 蛟河市| 旺苍县| 肃宁县| 宜阳县| 时尚| 旬阳县| 隆化县| 会泽县| 汕尾市| 乌兰察布市| 东丰县| 定边县| 裕民县| 怀宁县| 大邑县| 南开区| 巴东县| 西城区| 南宫市| 始兴县| 宿迁市| 长阳| 宁化县|