.gif)
對于第一種的程序可以綜合出的電路如圖1所示。
該電路用一個15位的加法器和寄存器組成一個15位的記數(shù)器。在記數(shù)器記完一周回到“000000000000000”時,通過后面的15輸入的與非門和一位的觸發(fā)器就可以實現(xiàn)同步的進行215次分頻,同步輸出32Hz的時鐘CCLK。CCLK再驅(qū)動一8位的移位寄存器,便可實現(xiàn)每32秒輸出一信號。
而用第二種的程序設計綜合出的電路如圖2所示。
.gif)
圖2所示的電路用一個18位的加法器和寄存器組成一個18位的記數(shù)器。后接了8個18輸入的邏輯門和8輸入的或門。輸入的1kHz時鐘經(jīng)過記數(shù)器被分頻,其中有八個相隔32Hz的記數(shù)狀態(tài),邏輯門就負責把這八狀態(tài)譯碼成所需的八組信號。譯碼后的數(shù)據(jù)通過選擇器輸出到8位的觸發(fā)器,以實現(xiàn)同步輸出。還有個鎖存器,是用來保持輸出信號不變,在八個狀態(tài)中的從一個狀態(tài)變到下一個之前,保持前一個的數(shù)值。選擇器當邏輯門輸出新的數(shù)據(jù)時讓其輸出數(shù)據(jù)通過,在新數(shù)據(jù)到來之前輸出鎖存器的數(shù)據(jù)。
以上兩種方法都能實現(xiàn)相同的邏輯功能,但圖2所示的方法由于運用了較少位數(shù)的記數(shù)器,所用的邏輯門也較簡單,而且還少用了多路選擇器和鎖存器資源,所以綜合出來的電路較簡單,以XILINX Spartan S05 -3 芯片為例。第一種方法占用芯片CLB的12%,其中FMAPS為9%,最高工作速度為82Hz。而第二種方法占用了15%的CLB,F(xiàn)MAPS占用15%,最高工作速度只有69.9MHz。在這一個簡單的設計之中就能省20%的電路,提高12.1MHz的工作速度,由此可見科學的劃分設計對降低電路復雜程度的重要意義。
3 邏輯設計對電路結(jié)構(gòu)的影響
還有一個使電路復雜化的原因是邏輯電路的輸入項太多以致需占用過多的面積。我們從圖3和圖4兩個相同功能的邏輯電路和他們對應的VHDL描述來分析。
.gif)
比較兩圖可知,圖3是二級邏輯門,每個輸入信號與不只一個邏輯門相連,圖4是三級的邏輯門,每個輸入信號只與一邏輯門相連。由于級數(shù)少,延時也較少,因此圖3的速度要比圖4快。然而,由于圖3的輸入項要比圖4大的多(10:5),因此,占用的面積必然也比圖3大。圖4是圖3通過提取公因數(shù)(例中是B和C)得來的,這是把附加的中間項加到結(jié)構(gòu)描述中去的一種過程,它使輸入到輸出中的邏輯級數(shù)增加,犧牲速度換來電路占用面積的減少。對于對延時要求不高的情況下采用這種方法分解邏輯電路以達到減少電路復雜度的目的。
.gif)
通過以上簡單、初步的探討,我們可以知道,用VHDL進行集成電路的設計,牽涉到對VHDL語言的使用方法和對設計的理解程度。本文討論了以下幾個簡化和優(yōu)化電路設計的3個值得注意的方面:
。ǎ保┰谟肰HDL進行設計中要注意避免不必要的寄存器描述。
。ǎ玻┰诰帉懗绦蚯耙葘φ麄設計進行較深入的了解科學的劃分設計,多設想幾種方案再進行比較用多個較少位數(shù)的單元取代較多位數(shù)的單元。
(3)在延時要求不高的情況下,可提取邏輯電路公因子把它分解成含有中間變量的多級電路。





