天天看點

altera fpga大小如何衡量_勇敢的芯伴你玩轉Altera FPGA連載24:表面現象揭秘——邏輯關系...

勇敢的芯伴你玩轉Altera FPGA連載24:表面現象揭秘——邏輯關系

特權同學,版權所有

配套例程和更多資料下載下傳連結:

http://pan.baidu.com/s/1i5LMUUD

altera fpga大小如何衡量_勇敢的芯伴你玩轉Altera FPGA連載24:表面現象揭秘——邏輯關系...

神奇的0和1,緣何能夠如此的變化多端?從某種意義上看,無非就是數字本身固有的各種各樣的邏輯關系在使然。在今天的數字系統中,雖然可能整個系統的不同晶片或相同晶片的不同子產品之間供給電壓不盡相同,有5V/3.3V/2.5V/1.8V/1.2V等等,但是從基本原理上看,無論用什麼電壓值代表1(通常都一緻的用0V表示0),其内部邏輯運算原理都是一緻的。

0和1,他們的最基本邏輯運算是通過非門、與門和或門來實作的。非門的符号和真值表如圖3.5所示。輸入x經過非門後,輸出z為x的取值反向,如輸入x=0則z=1,反之,輸入x=1則z=0。

altera fpga大小如何衡量_勇敢的芯伴你玩轉Altera FPGA連載24:表面現象揭秘——邏輯關系...

圖3.5 非門符号和真值表

與門的符号和真值表如圖3.6所示。輸入x和y進行與運算後得到結果z。與運算的原則就是“遇0則0,全1則1”。

altera fpga大小如何衡量_勇敢的芯伴你玩轉Altera FPGA連載24:表面現象揭秘——邏輯關系...

圖3.6 與門符号和真值表

或門的符号和真值表如圖3.7所示。輸入x和y進行或運算後得到結果z。或運算的原則就是“遇1則1,全0則0”。

altera fpga大小如何衡量_勇敢的芯伴你玩轉Altera FPGA連載24:表面現象揭秘——邏輯關系...

圖3.7 或門符号和真值表

在與、或、非這三種最基本的邏輯門基礎上進行一些擴充,就産生了一些常見的邏輯門如與非門、或非門、異或門、同或門,其符号和真值表分别如圖3.8、圖3.9、圖3.10和圖3.11所示。

altera fpga大小如何衡量_勇敢的芯伴你玩轉Altera FPGA連載24:表面現象揭秘——邏輯關系...

圖3.8 與非門符号和真值表

altera fpga大小如何衡量_勇敢的芯伴你玩轉Altera FPGA連載24:表面現象揭秘——邏輯關系...

圖3.9 或非門符号和真值表

altera fpga大小如何衡量_勇敢的芯伴你玩轉Altera FPGA連載24:表面現象揭秘——邏輯關系...

圖3.10 異或門符号和真值表

altera fpga大小如何衡量_勇敢的芯伴你玩轉Altera FPGA連載24:表面現象揭秘——邏輯關系...

圖3.11 同或門符号和真值表

有了這些基本的門電路,可能有些人還是不了解,到底這些門電路能夠幹什麼,隻是做做簡單的邏輯關系處理?非也,數字電路中的邏輯門其實就如同數學運算中的1+1=2和2-1=1這樣簡單卻又非常基礎的關系。數字電路的邏輯門說白了也是為數學運算服務的,人類運算的基礎——加、減、乘、除都可以用邏輯門來完成,更進階一些的運算如開方、求根号等,一樣可以通過一些巧妙的邏輯門處理算法解決。人類不是有一套十進制的運算方式了,那又為什麼一定要通過邏輯門以二級制的方式來完成這類運算呢?究其根本原因,是因為二進制的處理機制是數字電路(或者更大一點說,也是計算機技術)的基礎,而基本的邏輯門運算又非常适合于二進制的運算。再往後,如果讀者有機會更深入到電子或計算機相關的應用中,回頭再望望今天所說的這些基本邏輯門電路,一定會驚歎那些計算機前輩們的智慧。可不是,話說能夠用最簡單的東西實作最複雜的事物那才是人類創造的最高水準。

下面列舉一個最簡單的1位加法器的例子,如圖3.12所示,x和y相加,其結果為z,進位為c。我們觀察其真值表發現:z = x^y,c = x&y。果然,1位加法非常輕易的用兩個邏輯門電路實作了。

altera fpga大小如何衡量_勇敢的芯伴你玩轉Altera FPGA連載24:表面現象揭秘——邏輯關系...

圖3.12 1位加法器

若是再深入,2位、3位甚至更多位的加法運算,對于每個位的結果和進位,都可以仿照1位加法器的方式來實作。由此可見,邏輯門還真是那麼回事。

接下來,我們要用這些基本的邏輯門搭個複雜點的電路。這個電路如圖3.13所示,這是邊沿觸發的D觸發器電路。該觸發器的功能是實作時鐘信号clk上升沿(由0變化到1)時将輸入信号D的值鎖存到輸出信号q。

altera fpga大小如何衡量_勇敢的芯伴你玩轉Altera FPGA連載24:表面現象揭秘——邏輯關系...

圖3.13 邊沿觸發的D觸發器電路

該D觸發器的真值表如表3.1所示。由此表不難看出,這個D觸發器實作了clk信号的上升沿鎖存目前輸入D信号值到輸出信号q或~q的功能,而當clk信号為0或者保持高電平期間,D信号的取值變化不會影響目前的輸出q和~q。

表3.1 D觸發器真值表Dclkf3f4f5f6f1f2q~q

000111----

101110----

↓00111----

↑01110----

0↑01010101

1↑10101010

↑10101----

↓11011----

0↓0111----

1↓1110----

由此可見,D觸發器可用于存儲比特信号,當D輸入為0時,在時鐘clk的上升沿,q輸出也為0;當D輸入為1時,在時鐘clk的上升沿,q輸出也為1;在其他的時刻,q輸出保持不變。在實際電路中,時鐘信号clk源源不斷的有标準的方波輸入,每個時鐘信号clk的上升沿都會使得D觸發器的輸入D值被鎖存到輸出q值中。其實這個D觸發器就是我們最基本的寄存器的雛形了,在時序電路中,寄存器和時鐘是最基本的要素。

如圖3.14所示,這是一個帶有異步置位和複位功能的D觸發器。所謂置位,即set信号有效時(即為1時),該電路無論時鐘clk和輸入D值的狀态如何,輸出q一定是1;同理,所謂複位,即指clr信号有效時(即為1時),該電路無論時鐘clk和輸入D值的狀态如何,輸出q一定是0。有了set和clr信号,我們可以在任何時刻得到需要的輸出q信号值,當然了,一般隻有在系統上電初始或者出現異常後才會執行這樣的操作。

altera fpga大小如何衡量_勇敢的芯伴你玩轉Altera FPGA連載24:表面現象揭秘——邏輯關系...

圖3.14 帶異步置位和複位的D觸發器

如圖3.15所示,通常我們可以用一個簡化的模型符号來表示帶有異步置位和複位功能的邊沿觸發的D觸發器,通常我們也可以直接稱它為寄存器。可别小瞧了它,在後面的應用中我們會逐漸感受到它的神通廣大。

altera fpga大小如何衡量_勇敢的芯伴你玩轉Altera FPGA連載24:表面現象揭秘——邏輯關系...

圖3.15 D觸發器模型符号