學習電子工程的過程中離不開大量的實驗和動手練習,就如同開車一樣,學習理論數載,如果從來沒有打幾把方向盤,踩幾腳油門然后再被教練緊急剎車幾次,仍然不會開車。正所謂,看別人做一百次,不如自己練一次。
1
門電路原理
在數字電路中,門電路是最基本的構成單位,可以說,任何復雜的數字電路系統都可以通過我們耳熟能詳的與門,非門,或門,與非門,異或門等等組合實現。
對于各種門電路的邏輯特征,想必大家都掌握得爐火純青,腦海里可以毫無壓力地隨時浮現著各種0和1的組合。
然而,搭建一個門電路實驗卻并不容易!我們以下面的與非門電路為例。
圖1 與非門電路
表1 與非門真值表
傳說中,如果想做一個與非門的數字電路實驗,可以通過以下兩種方法:
熱愛模電的朋友們可以通過MOS管+面包板+電源+跳線以及若干小時的反復調試。
土豪朋友們對此不屑一顧,直接拍幾千塊買一臺數字電路實驗儀。
當然,既沒有那么熱愛模電,也沒有那么多軟妹紙的朋友門仍然有更合適的辦法,那就是通過邏輯芯片。比如大家熟悉的7400系列的邏輯芯片,只需要接上電源,再配上開關,LED等器件,就可以通過實驗方式對與非門的邏輯和電氣特性進行直觀地學習,比如采用7400 Quad2的與非門邏輯芯片。
圖2 與非門邏輯芯片
因為我們要觀察實驗現象,因此需要配上開關和LED燈,使得實驗可以可視化。當然,作為習慣了課上學習1+1=2,考試見到
的后浪,肯定不能滿足于這個簡單的實驗。現在,在上一個練習的基礎上,我們來嘗試構建以下門電路組合。
圖3 組合門電路
嵌入式專欄
2
門電路實現
以下是某位同學獨特的實現方式:
圖4
雖然我們還通過軟件仿真的方式構建上述電路并觀察波形,然而和電路上進行實打實的操作相比終究是有質的差別。畢竟靠著模擬飛車駕齡20年資歷上路還是要被警察叔叔帶走的。
不難看出,畫門電路容易,對門電路進行實驗很難,對各式各樣奇葩組合的門電路進行實驗更是難上加難。然而這一切在FPGA面前都只是談笑風生。
FPGA,英文全稱Field Programmable Gate Array,是一種可以通過某百科或搜索引擎查找到并且看了之后不明覺厲的東西。在此,我們主要介紹一下FPGA的部分特點,以及如何使其與數字電路實驗進行結合。
首先問大家一個問題:我們在計算3x7=21或者5x8=40的時候,有誰是通過最原始的乘法原理推導并計算出來的,如果有,請在底部留言并獲得所有人的膜拜。相信大部分人都可以在半秒內給出準確答案,為什么?因為我們都背過九九乘法表,只要是在這個范圍內的任意乘法我們的大腦都可以瞬間對應出計算結果。相信大家對當年的112=121,122=144,132=169…等等還歷歷在目。
之所以我們可以在一定范圍內進行準確和快速的計算,是因為我們的大腦里儲存了一個擁有大量數據的查找表,在一定范圍內的輸入數據我們都可以迅速在表中找到對應答案。其實,FPGA的運算處理方式就類似于我們的大腦。它擁有一個可以儲存大量數據的查找表,只要我們通過程序定義出輸入與輸出之間的邏輯關系,FPGA就可以按照該邏輯關系自行對其內部結構進行重新定義,直白地說,就是我們可以隨時給FPGA進行洗腦,而后者可以永遠不計回報,心甘情愿地被洗腦。
接下來我們就快速展示一下如何通過FPGA展示圖3所示的門電路。既然要對FPGA進行洗腦,肯定需要語言。在這里我們采用簡單通俗的Verilog語言,通過描述門電路的方式,以16行代碼輕松在FPGA上搭建上述門電路。
module custblock ( input wire A, //定義輸入A input wire B, //定義輸入B input wire C, //定義輸入C input wire D, //定義輸入D output wire Y1, //定義輸出Y1 output wire Y2 //定義輸出Y2 ); wire s1,s2,s3; //定義中間變量 nand (s1,A,B); //(輸出,輸入,輸入) or (s2,C,D); // 調用基本門電路 xnor (Y1,s1,C); and (s3,C,s2); xor (Y2,C,s3); endmodule
將上述代碼導入FPGA之后,就等于在FPGA上構建出了一個模塊,輸入端分別是A,B,C,D,輸出端分別是Y2,Y1,且內部結構和圖3中所示的功能完全一樣。
圖5
不過,對于實驗來說,僅僅在FPGA上搭建出該門電路模塊還是不夠的,我們還需要允許實驗者對該電路進行調試并觀察現象,因此還需要有相應的可操作/觀察元件與FPGA配合使用。接下來就是我們備受歡迎的小腳丫FPGA登場的時候了。
圖6 小腳丫FPGA核心板
從示意圖中可以看出,小腳丫FPGA帶有多個板載外設,如開關,LED和數碼管等,可以對絕大部分數字電路進行生動的實驗操作。小腳丫配有USB下載器,可以通過一根USB線實現供電和程序下載。板上的36個多功能I/O接口可以進行項目擴展,且封裝采用DIP40尺寸,因此可以與面包板完美結合。
以下是通過我們小腳丫FPGA對該電路進行的實驗。我們采用板載的4個撥碼開關和2個LED(低電平亮)分別作為模塊的4路輸入和2路輸出,并且通過調節輸入來觀察輸出結果。上下兩圖分別所對應的輸入分別為:0001和0101,我們也觀察到了在兩種情況下的LED狀態。
責任編輯:haq
-
FPGA
+關注
關注
1630文章
21796瀏覽量
605256 -
電路
+關注
關注
172文章
5962瀏覽量
172742 -
核心板
+關注
關注
5文章
1029瀏覽量
29878
發布評論請先 登錄
相關推薦
評論