|
勇敢的芯伴你玩轉(zhuǎn)Altera FPGA連載24:表面現(xiàn)象揭秘——邏輯關(guān)系 特權(quán)同學(xué),版權(quán)所有 配套例程和更多資料下載鏈接: http://pan.baidu.com/s/1i5LMUUD
神奇的0和1,緣何能夠如此的變化多端?從某種意義上看,無非就是數(shù)字本身固有的各種各樣的邏輯關(guān)系在使然。在今天的數(shù)字系統(tǒng)中,雖然可能整個(gè)系統(tǒng)的不同芯片或相同芯片的不同模塊之間供給電壓不盡相同,有5V/3.3V/2.5V/1.8V/1.2V等等,但是從基本原理上看,無論用什么電壓值代表1(通常都一致的用0V表示0),其內(nèi)部邏輯運(yùn)算原理都是一致的。 0和1,他們的最基本邏輯運(yùn)算是通過非門、與門和或門來實(shí)現(xiàn)的。非門的符號(hào)和真值表如圖3.5所示。輸入x經(jīng)過非門后,輸出z為x的取值反向,如輸入x=0則z=1,反之,輸入x=1則z=0。
圖3.5 非門符號(hào)和真值表 與門的符號(hào)和真值表如圖3.6所示。輸入x和y進(jìn)行與運(yùn)算后得到結(jié)果z。與運(yùn)算的原則就是“遇0則0,全1則1”。
圖3.6 與門符號(hào)和真值表 或門的符號(hào)和真值表如圖3.7所示。輸入x和y進(jìn)行或運(yùn)算后得到結(jié)果z;蜻\(yùn)算的原則就是“遇1則1,全0則0”。
圖3.7 或門符號(hào)和真值表 在與、或、非這三種最基本的邏輯門基礎(chǔ)上進(jìn)行一些擴(kuò)展,就產(chǎn)生了一些常見的邏輯門如與非門、或非門、異或門、同或門,其符號(hào)和真值表分別如圖3.8、圖3.9、圖3.10和圖3.11所示。
圖3.8 與非門符號(hào)和真值表
圖3.9 或非門符號(hào)和真值表
圖3.10 異或門符號(hào)和真值表
圖3.11 同或門符號(hào)和真值表 有了這些基本的門電路,可能有些人還是不理解,到底這些門電路能夠干什么,只是做做簡(jiǎn)單的邏輯關(guān)系處理?非也,數(shù)字電路中的邏輯門其實(shí)就如同數(shù)學(xué)運(yùn)算中的1+1=2和2-1=1這樣簡(jiǎn)單卻又非常基礎(chǔ)的關(guān)系。數(shù)字電路的邏輯門說白了也是為數(shù)學(xué)運(yùn)算服務(wù)的,人類運(yùn)算的基礎(chǔ)——加、減、乘、除都可以用邏輯門來完成,更高級(jí)一些的運(yùn)算如開方、求根號(hào)等,一樣可以通過一些巧妙的邏輯門處理算法解決。人類不是有一套十進(jìn)制的運(yùn)算方式了,那又為什么一定要通過邏輯門以二級(jí)制的方式來完成這類運(yùn)算呢?究其根本原因,是因?yàn)槎M(jìn)制的處理機(jī)制是數(shù)字電路(或者更大一點(diǎn)說,也是計(jì)算機(jī)技術(shù))的基礎(chǔ),而基本的邏輯門運(yùn)算又非常適合于二進(jìn)制的運(yùn)算。再往后,如果讀者有機(jī)會(huì)更深入到電子或計(jì)算機(jī)相關(guān)的應(yīng)用中,回頭再望望今天所說的這些基本邏輯門電路,一定會(huì)驚嘆那些計(jì)算機(jī)前輩們的智慧?刹皇牵捳f能夠用最簡(jiǎn)單的東西實(shí)現(xiàn)最復(fù)雜的事物那才是人類創(chuàng)造的最高水平。 下面列舉一個(gè)最簡(jiǎn)單的1位加法器的例子,如圖3.12所示,x和y相加,其結(jié)果為z,進(jìn)位為c。我們觀察其真值表發(fā)現(xiàn):z = x^y,c = x&y。果然,1位加法非常輕易的用兩個(gè)邏輯門電路實(shí)現(xiàn)了。
圖3.12 1位加法器 若是再深入,2位、3位甚至更多位的加法運(yùn)算,對(duì)于每個(gè)位的結(jié)果和進(jìn)位,都可以仿照1位加法器的方式來實(shí)現(xiàn)。由此可見,邏輯門還真是那么回事。 接下來,我們要用這些基本的邏輯門搭個(gè)復(fù)雜點(diǎn)的電路。這個(gè)電路如圖3.13所示,這是邊沿觸發(fā)的D觸發(fā)器電路。該觸發(fā)器的功能是實(shí)現(xiàn)時(shí)鐘信號(hào)clk上升沿(由0變化到1)時(shí)將輸入信號(hào)D的值鎖存到輸出信號(hào)q。
圖3.13 邊沿觸發(fā)的D觸發(fā)器電路 該D觸發(fā)器的真值表如表3.1所示。由此表不難看出,這個(gè)D觸發(fā)器實(shí)現(xiàn)了clk信號(hào)的上升沿鎖存當(dāng)前輸入D信號(hào)值到輸出信號(hào)q或~q的功能,而當(dāng)clk信號(hào)為0或者保持高電平期間,D信號(hào)的取值變化不會(huì)影響當(dāng)前的輸出q和~q。 表3.1 D觸發(fā)器真值表
由此可見,D觸發(fā)器可用于存儲(chǔ)比特信號(hào),當(dāng)D輸入為0時(shí),在時(shí)鐘clk的上升沿,q輸出也為0;當(dāng)D輸入為1時(shí),在時(shí)鐘clk的上升沿,q輸出也為1;在其他的時(shí)刻,q輸出保持不變。在實(shí)際電路中,時(shí)鐘信號(hào)clk源源不斷的有標(biāo)準(zhǔn)的方波輸入,每個(gè)時(shí)鐘信號(hào)clk的上升沿都會(huì)使得D觸發(fā)器的輸入D值被鎖存到輸出q值中。其實(shí)這個(gè)D觸發(fā)器就是我們最基本的寄存器的雛形了,在時(shí)序電路中,寄存器和時(shí)鐘是最基本的要素。 如圖3.14所示,這是一個(gè)帶有異步置位和復(fù)位功能的D觸發(fā)器。所謂置位,即set信號(hào)有效時(shí)(即為1時(shí)),該電路無論時(shí)鐘clk和輸入D值的狀態(tài)如何,輸出q一定是1;同理,所謂復(fù)位,即指clr信號(hào)有效時(shí)(即為1時(shí)),該電路無論時(shí)鐘clk和輸入D值的狀態(tài)如何,輸出q一定是0。有了set和clr信號(hào),我們可以在任何時(shí)刻得到需要的輸出q信號(hào)值,當(dāng)然了,一般只有在系統(tǒng)上電初始或者出現(xiàn)異常后才會(huì)執(zhí)行這樣的操作。
圖3.14 帶異步置位和復(fù)位的D觸發(fā)器 如圖3.15所示,通常我們可以用一個(gè)簡(jiǎn)化的模型符號(hào)來表示帶有異步置位和復(fù)位功能的邊沿觸發(fā)的D觸發(fā)器,通常我們也可以直接稱它為寄存器?蓜e小瞧了它,在后面的應(yīng)用中我們會(huì)逐漸感受到它的神通廣大。
圖3.15 D觸發(fā)器模型符號(hào) |