日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【计算机组成与设计学习笔记】(二)

發布時間:2024/3/24 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【计算机组成与设计学习笔记】(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、Verilog HDL

Verilog HDL(Hardware Description Language)是一種設計硬件電路的語言,由IEEE完成了對其標準化的工作。 Verilog HDL總體來講帶有C語言的風格,是工業界常用的硬件描述語言。——《計算機原理與設計》,李亞民(全文引用的概念都出自此書,不多贅述)

個人感覺,Verilog HDL跟每一種編程語言一樣,有自己獨特的地方。Verilog HDL作為一種HDL,它語法風格很像C類語言,但是它更如同名字一樣,偏重于去描述,而不是像C注重算法實現的過程或者是面向對象的抽象。這或許是因為它除了邏輯設計以外,還有時序設計,所以往往要比一般設計更加復雜,對設計者要求更加謹慎和細心。

二、CMOS

CMOS的全稱是Complementary Metal Oxide Semiconductor,意味互補型金屬氧化物半導體,由PMOS和NMOS兩種晶體管“互補”構成

CMOS晶體管結合了PMOS和NMOS兩種晶體管的優點,使得電路更易導通1和0兩種狀態,物理特性和規格標準這里不作討論。
在CMOS級別上,我們可以搭建起常見的門級邏輯,如非門、與或門、異或門等。而在我們設計時,我們會經常忽略CMOS這一層級的考慮,因為越低的層級更加繁瑣,而且當工程量大了以后,我們也很難顧慮了。用的晶體管的個數,可以在大致程度上衡量這個器件的功耗、面積,從而決定這個器件最后的好壞。
在Verilog HDL里,給出了這一級別設計的一些類型:

supply1 vdd; //高電平 supply0 gnd; //低電平 pmos p1(drain, source, gate); nmos n1(drain, source, gate);

而在這個層級上定義了一些CMOS門,代碼已經傳上CSDNCode里,需要或有興趣實現的可以參考這里

三、四種風格的Verilog HDL描述

1.晶體管開關級:也就是上述的CMOS級別描述;
2.邏輯門級:在CMOS上搭建的邏輯門,從而實現更高的設計;
3.數據流級:從這一級別開始,設計變得簡易。數據流級強調和關注數據的流向、改變,使得信號數據有了連接關系,牽一發而動全身的姿態。
4.功能描述級:更接近自然語言的級別。

四、常用的組合電路

1.多路選擇器
2.譯碼器
這里就不多贅述兩者的概念和實現。這兩個組合電路可以很簡單地實現邏輯門(非、與、或等),從而組成組合電路。

五、時序電路

1.D鎖存器
2.D觸發器
3.狀態機
同樣,三者也不多贅述。
狀態機是一個很重要的時序邏輯,可以很方便地解決我們一些實際問題,而我們的生活中處處都是一個個狀態機,包括我們的投幣機、電子防盜門系統等。如果有機會,將進一步學習。

六、實例:3輸入CMOS與非門

在這里,以一個3輸入CMOS的與非門作為實例。
實現代碼:

<verilog HDL> module cmosnand3 (ina,inb,inc,out);input ina,inb,inc;output out;supply1 vdd;supply0 gnd;wire wn1,wn2;pmos p1(out,vdd,ina);pmos p2(out,vdd,inb);pmos p3(out,vdd,inc);nmos n1(out,wn1,ina);nmos n2(wn1,wn2,inb);nmos n3(wn2,gnd,inc);endmodule </verilog HDL>

測試代碼:

<verilog HDL> `include "cmosnand3.v"module cmosnand3_test;reg ina,inb,inc;wire out;cmosnand3 c1(ina,inb,inc,out);integer i;initial begin#0 ina = 0; inb = 0; inc = 0;$display("\tina\tinb\tinc\tout");for(i = 0; i < 9; i = i + 1)begin#1 {ina,inb,inc} = i;end#1 $finish;endinitial begin$monitor("\t%b\t%b\t%b\t%b",ina,inb,inc,out);$dumpfile("cmosnand3.vcd");$dumpvars;end endmodule</verilog HDL>

測試結果截圖:

總結

以上是生活随笔為你收集整理的【计算机组成与设计学习笔记】(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。