|
使用乘積和就可以表達(dá)大部分的邏輯功能。使用兩個組合邏輯來實(shí)現(xiàn)這些功能。AND門建立乘積項(xiàng),OR門對乘積求和。在輸入上可以采用非門來置反輸入,以產(chǎn)生所需的功能。為了存儲輸出,或者使輸出與其他輸出同步,需要寄存器形式的同步邏輯。如果不需要存儲器或者同步,可以旁路輸出寄存器。采用TTL邏輯器件,在試驗(yàn)面包板上,或者印刷電路板上,用銅線把這些分立原件連在一起。把這些邏輯門和寄存器組合到一個器件中去。
某些PAL包括了陣列反饋選項(xiàng),以實(shí)現(xiàn)更復(fù)雜的邏輯功能,還可以完全旁路輸出寄存器,以建立異步輸出。
一個復(fù)雜的數(shù)字系統(tǒng)設(shè)計往往是一個從算法到由硬件線連接的門級邏輯結(jié)構(gòu),再映射到硅片的逐步實(shí)現(xiàn)的過程。
算法就是解決特定問題的有序步驟;數(shù)據(jù)結(jié)構(gòu)就是解決特定問題的相應(yīng)的模型。
計算電路究竟是如何構(gòu)成的?為什么它能有效和正確執(zhí)行每一步程序?它能不能用另外一種結(jié)構(gòu)方案來構(gòu)成?運(yùn)算速度還能不能提高?所謂計算機(jī)微體系結(jié)構(gòu)就是回答以上問題,并從硬線邏輯和軟件兩個角度一起來探討某種結(jié)構(gòu)的計算機(jī)的性能潛力。
用C語言配合Verilog HDL設(shè)計算法的硬件電路塊時考慮的三個主要問題:
1.為什么選擇C語言與Verilog HDL配合使用?
2.C語言與Verilog HDL的使用有何限制?
3.如何利用C語言來加速硬件的設(shè)計和故障檢測?
利用C語言完善的查錯和編譯環(huán)境,設(shè)計者可以先設(shè)計出一個功能正確的設(shè)計單元,以此作為設(shè)計比較的標(biāo)準(zhǔn)。然后,把C程序一段一段地改寫成用并行機(jī)構(gòu)(類似于Verilog HDL)描述的C程序,此時還是在C 的環(huán)境里,使用的依然是C語言。如果運(yùn)行結(jié)果正確,就將C語言關(guān)鍵字用Verilog HDL相應(yīng)的關(guān)鍵字替換,進(jìn)入Verilog HDL的環(huán)境。將測試輸入同時加到C與Verilog HDL兩個單元,將其輸出做比較。這樣很容易發(fā)現(xiàn)問題的所在,然后更正,再做測試,直至正確無誤。剩下的工作就交給后面的設(shè)計工程師。
C程序是順序結(jié)構(gòu),而Verilog HDL屬于并行結(jié)構(gòu)。
C程序調(diào)用函數(shù)是沒有延時特性的,一個函數(shù)是唯一確定的,對同一個函數(shù)的不同調(diào)用是一樣的。而Verilog HDL中對模塊的圖同調(diào)用是不同的,即使調(diào)用的是同一模塊,必須用不同的名字來指定。Verilog HDL的語法規(guī)則很死,限制很多,能用的判斷語句有限。仿真速度較慢,查錯功能差,錯誤信息不完整。仿真軟件通常很貴,而且不一定可靠。C語言沒有時間關(guān)系,轉(zhuǎn)換后的Verilog HDL程序必須做到?jīng)]有任何外加的人工延時信號,也就是必須表達(dá)為有限狀態(tài)機(jī),即RTL級的Verilog HDL;否則無法使用綜合工具把Verilog HDL源代碼轉(zhuǎn)化為門級邏輯。
|
|