目前隨著對電路功能及性能要求的不斷提高,傳統(tǒng)的簡單集成電路已不能滿足設計者的需求,所以在功能要求不斷提高的背景下,可編程器件逐漸成為廣大硬件工程師所必需的設計器件。 本書通過先對Altem公司的CPLD/FPGA的介紹,使讀者對可編程器件有一個深入的了解;然后通過標準VHDL的介紹,并且穿插具體工程的實例,使讀者對VHDL有一個準確的掌握,不再對可編程器件感到神秘,而且能夠達到輕松上手的目的。 本書內容豐富、全面系統(tǒng)、實用性很強,可以使讀者快速全面地掌握vHDL設計的知識。本書既可以作為高等學校相關專業(yè)的教材或參考書,同時也可以作為廣大硬件電路設計工程師必不可少的工具書或培訓教材。
書名 | 面向CPLD/FPGA的VHDL設計 | 出版社 | 機械工業(yè)出版社 |
---|---|---|---|
頁數 | 294頁 | ISBN | 7111201094 |
作者 | 王開軍 姜宇柏 | 出版日期 | 2007年1月1日 |
開本 | 16開 | 品牌 | 機械工業(yè)出版社 |
叢書序
前言
第1章 可編程器件及Altera公司可
編程器件簡介
1.1可編程邏輯器件簡介
1.1.1可編程器件的發(fā)展歷史及前景
1.1.2可編程邏輯器件的基本結構
1.1.3可編程器件的分類
1.2 Altera系列器件簡介
1.2.1 PLD廠商簡介
1.2.2 Altera公司的復雜可編程器件
1.2.3 Altera公司的現場可編門陣列
1.3如何根據項目選擇器件
第2章 硬件描述語言簡介
2.1硬件描述語言的由來和發(fā)展
2.2各種硬件描述語言的介紹及特點
2.2.1 VHDL
2.2.2 Verilog HDL
2.2.3 Superlog
2.2.4 SystemC
2.3 VHDL的基本語法
2.3.1 VHDL的基本結構
2.3.2 VHDL的基本語句
第3章 Altera公司QuartusⅡ介紹
3.1 QuartusⅡ簡介
3.2 QuartusⅡ安裝及界面介紹
3.2.1 QuartusⅡ安裝
3.2.2 QuartusⅡ界面簡介
3.2.3 QuartusⅡ常用的設置
第4章 組合邏輯電路設計
4.1組合邏輯電路概述
4.1.1組合邏輯電路的定義
4.1.2組合邏輯電路的分析
4.1.3組合邏輯電路的設計
4.2我在第一個項目中遇到的問題
4.3典型的組合邏輯電路分析
4.3.1譯碼器
4.3.2加法器
4.3.3只讀存儲器
4.3.4比較器
4.3.5多路選擇器
4.3.6三態(tài)總線
4.4工程師們的經驗
4.4.1組合邏輯電路的競爭冒險
4.4.2選擇器設計和FPGA資源
第5章 時序邏輯電路的設計
5.1時序是一切硬件工作的基礎
5.1.1時序邏輯電路的定義
5.1.2時序邏輯電路的分類
5.1.3時序邏輯電路的分析
5.1.4時序邏輯電路的設計
5.2設計中應考慮的時序問題
5.2.1時鐘信號
5.2.2清零信號和置位信號
5.2.3建立時間和保持時間
5.2.4觸發(fā)器及其應用
5.3典型的時序邏輯電路分析與描述
5.3.1分頻器
5.3.2計數器
5.3.3移位寄存器
5.3.4存儲器
5.4怎樣才能避免潛在的危險
5.4.1 FPGA/CPLD中的競爭冒險
5.4.2時序電路中的競爭冒險
5.4.3如何消除時序電路中的競爭冒險
5.5工程師們的經驗
5.5.1毛刺的產生
5.5.2如何消除毛刺
5.5.3計數器設計與FPGA資源
第6章 有限狀態(tài)機
6.1什么是狀態(tài)機
6.2有限狀態(tài)機分類及VHDL描述
6.2.1摩爾型狀態(tài)機
6.2.2米勒型狀態(tài)機
6.3有限狀態(tài)機的編碼
6.3.1狀態(tài)機的編碼方式
6.3.2狀態(tài)方程和輸出方程
6.3.3剩余狀態(tài)的處理
6.4有限狀態(tài)機的VHDL設計
6.4.1有限狀態(tài)機的設計流程
6.4.2有限狀態(tài)機的復位
6.5狀態(tài)機與時序邏輯電路
6.6典型狀態(tài)機電路的VHDL描述
6.7工程師們的經驗
6.7.1狀態(tài)機速度的優(yōu)化
6.7.2狀態(tài)機的容錯性設計
第7章 典型的VHDL設計解析
7.1分頻電路
7.1.1 2的冪次分頻電路
7.1.2非2的冪次分頻電路
7.1.3非整數分頻電路
7.2倍頻電路
7.3多位加法器電路
7.4偽隨機序列發(fā)生器
7.5并/串轉換器
7.6 FIF0存儲器
7.7雙向數據轉換器
7.8數字頻率計
第8章 電路的仿真
8.1什么是電路的仿真
8.2 ModelSim功能介紹
8.2.1 ModelSim窗口說明
8.2.2波形窗口調試方法
8.3怎樣寫VHDL測試基準
8.3.1測試基準常用的VHDL語句
8.3.2測試基準分析
8.4一個功能仿真實例
8.4.1基本仿真流程
8.4.2工程仿真流程
第9章 基于FPGA/CPLD的VHDL設計經驗總結
9.1養(yǎng)成良好的編程習慣
9.2怎樣優(yōu)化你的程序
9.2.1如何優(yōu)化VHDL設計
9.2.2如何在VHDL設計中提高綜合效率
9.3 FPGA/CPLD的設計和優(yōu)化
9.3.1哪些因素影響電路結構的復雜程度
9.3.2速度和面積的優(yōu)化
9.4系統(tǒng)級層次式設計
參考文獻
七段數碼管顯示 0-F 16 個 16進制的數字。 2、觀察字符亮度和顯示刷新的...
D觸發(fā)器(data flip-flop或delay flip-flop。)該觸發(fā)器由6個與非門組成,其中G1和G2構成基本RS觸發(fā)器。電平觸發(fā)的主從觸發(fā)器工作時,必須在正跳沿前加入輸入信號。如果在CP...
library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity trans38 is port( A:in std_logic_vector(2 downto 0);...
格式:pdf
大?。?span id="frz39ff" class="single-tag-height">382KB
頁數: 4頁
評分: 4.4
Ξ 基于 CPLD/ FPGA 器件參數化開方電路的設計及應用 魏佩敏 趙偉強 (紹興文理學院 工學院 ,浙江 紹興 312000) 摘 要 :討論二進制開方運算的過程以及利用 CPLD/ FPGA 進行開方運算硬件電路的設計思想和實現方案 . 關鍵詞 :二進制碼 ;開方 ;CPLD/ FPGA ;H DL 語言 中圖分類號 :TN702 文獻標識碼 :A 文章編號 :1008 - 293X (2005) 10 - 0058 - 04 目前在模擬信號數字化處理過程中 ,數字可編程器件以其性能穩(wěn)定 、處理速度快而得到廣泛應用 ,特 別是 EDA 軟件及在線可編程技術的使用 ,使設計的靈活性和設計速度大幅度提高 .在 CPLD/ FPGA 的開發(fā) 應用中 ,大多數 EDA 軟件都提供加法 、減法 、乘法的設計向導 ,或提供 LPM宏函
格式:pdf
大?。?span id="jthzbrv" class="single-tag-height">382KB
頁數: 5頁
評分: 4.5
首先介紹了防抖型矩陣式鍵盤的整體設計思路,然后采用模塊化設計方法對各個電路用VHDL進行設計,最后進行頂層文件設計和仿真,并用PLD器件下載驗證.整個電路具有故障率低、使用靈活、便于修改、在系統(tǒng)可編程性及可移植性強等優(yōu)點.
導讀: 本文討論的四種常用FPGA/CPLD設計思想與技巧:乒乓操作、串并轉換、流水線操作、數據接口同步化,都是FPGA/CPLD邏輯設計的內在規(guī)律的體現,合理地采用這些設計思想能在FPGA/CPLD設計工作中取得事半功倍的效果。
FPGA(Field-Programmable Gate Array),即現場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎上進一步發(fā)展的產物。它是作為專用集成電路(ASIC)領域中的一種半定制電路而出現的,既解決了定制電路的不足,又克服了原有可編程器件門電路數有限的缺點。
FPGA/CPLD的設計思想與技巧是一個非常大的話題,由于篇幅所限,本文僅介紹一些常用的設計思想與技巧,希望本文能引起工程師們的注意,如果能有意識地利用這些原則指導日后的設計工作,將取得事半功倍的效果!
1、乒乓操作
“乒乓操作”是一個常常應用于數據流控制的處理技巧,典型的乒乓操作方法如圖1所示。
乒乓操作的處理流程為:輸入數據流通過“輸入數據選擇單元”將數據流等時分配到兩個數據緩沖區(qū),數據緩沖模塊可以為任何存儲模塊,比較常用的存儲單元為雙口RAM(DPRAM)、單口RAM(SPRAM)、FIFO等。在第一個緩沖周期,將輸入的數據流緩存到“數據緩沖模塊1”;在第2個緩沖周期,通過“輸入數據選擇單元”的切換,將輸入的數據流緩存到“數據緩沖模塊2”,同時將“數據緩沖模塊1”緩存的第1個周期數據通過“輸入數據選擇單元”的選擇,送到“數據流運算處理模塊”進行運算處理;在第3個緩沖周期通過“輸入數據選擇單元”的再次切換,將輸入的數據流緩存到“數據緩沖模塊1”,同時將“數據緩沖模塊2”緩存的第2個周期的數據通過“輸入數據選擇單元”切換,送到“數據流運算處理模塊”進行運算處理。如此循環(huán)。
乒乓操作的最大特點是通過“輸入數據選擇單元”和“輸出數據選擇單元”按節(jié)拍、相互配合的切換,將經過緩沖的數據流沒有停頓地送到“數據流運算處理模塊”進行運算與處理。把乒乓操作模塊當做一個整體,站在這個模塊的兩端看數據,輸入數據流和輸出數據流都是連續(xù)不斷的,沒有任何停頓,因此非常適合對數據流進行流水線式處理。所以乒乓操作常常應用于流水線式算法,完成數據的無縫緩沖與處理。
乒乓操作的第二個優(yōu)點是可以節(jié)約緩沖區(qū)空間。比如在WCDMA基帶應用中,1個幀是由15個時隙組成的,有時需要將1整幀的數據延時一個時隙后處理,比較直接的辦法是將這幀數據緩存起來,然后延時1個時隙進行處理。這時緩沖區(qū)的長度是1整幀數據長,假設數據速率是3.84Mbps,1幀長10ms,則此時需要緩沖區(qū)長度是38400位。如果采用乒乓操作,只需定義兩個能緩沖1個時隙數據的RAM(單口RAM即可)。
當向一塊RAM寫數據的時候,從另一塊RAM讀數據,然后送到處理單元處理,此時每塊RAM的容量僅需2560位即可,2塊RAM加起來也只有5120位的容量。
另外,巧妙運用乒乓操作還可以達到用低速模塊處理高速數據流的效果。如圖2所示,數據緩沖模塊采用了雙口RAM,并在DPRAM后引入了一級數據預處理模塊,這個數據預處理可以根據需要的各種數據運算,比如在WCDMA設計中,對輸入數據流的解擴、解擾、去旋轉等。假設端口A的輸入數據流的速率為100Mbps,乒乓操作的緩沖周期是10ms。以下分析各個節(jié)點端口的數據速率。
A端口處輸入數據流速率為100Mbps,在第1個緩沖周期10ms內,通過“輸入數據選擇單元”,從B1到達DPRAM1。B1的數據速率也是100Mbps,DPRAM1要在10ms內寫入1Mb數據。同理,在第2個10ms,數據流被切換到DPRAM2,端口B2的數據速率也是100Mbps,DPRAM2在第2個10ms被寫入1Mb數據。在第3個10ms,數據流又切換到DPRAM1,DPRAM1被寫入1Mb數據。
仔細分析就會發(fā)現到第3個緩沖周期時,留給DPRAM1讀取數據并送到“數據預處理模塊1”的時間一共是20ms。有的工程師困惑于DPRAM1的讀數時間為什么是20ms,這個時間是這樣得來的:首先,在在第2個緩沖周期向DPRAM2寫數據的10ms內,DPRAM1可以進行讀操作;
在第1個緩沖周期的第5ms起(絕對時間為5ms時刻),DPRAM1就可以一邊向500K以后的地址寫數據,一邊從地址0讀數,到達10ms時,DPRAM1剛好寫完了1Mb數據,并且讀了500K數據,這個緩沖時間內DPRAM1讀了5ms;在第3個緩沖周期的第5ms起(絕對時間為35ms時刻),同理可以一邊向500K以后的地址寫數據一邊從地址0讀數,又讀取了5個ms,所以截止DPRAM1第一個周期存入的數據被完全覆蓋以前,DPRAM1最多可以讀取20ms時間,而所需讀取的數據為1Mb,所以端口C1的數據速率為:1Mb/20ms=50Mbps。因此,“數據預處理模塊1”的最低數據吞吐能力也僅僅要求為50Mbps。同理,“數據預處理模塊2”的最低數據吞吐能力也僅僅要求為50Mbps。換言之,通過乒乓操作,“數據預處理模塊”的時序壓力減輕了,所要求的數據處理速率僅僅為輸入數據速率的1/2。
通過乒乓操作實現低速模塊處理高速數據的實質是:通過DPRAM這種緩存單元實現了數據流的串并轉換,并行用“數據預處理模塊1”和“數據預處理模塊2”處理分流的數據,是面積與速度互換原則的體現!
2、串并轉換設計技巧
串并轉換是FPGA設計的一個重要技巧,它是數據流處理的常用手段,也是面積與速度互換思想的直接體現。
串并轉換的實現方法多種多樣,根據數據的排序和數量的要求,可以選用寄存器、RAM等實現。前面在乒乓操作的圖例中,就是通過DPRAM實現了數據流的串并轉換,而且由于使用了DPRAM,數據的緩沖區(qū)可以開得很大,對于數量比較小的設計可以采用寄存器完成串并轉換。如無特殊需求,應該用同步時序設計完成串并之間的轉換。比如數據從串行到并行,數據排列順序是高位在前,可以用下面的編碼實現:
prl_temp《={prl_temp,srl_in};
其中,prl_temp是并行輸出緩存寄存器,srl_in是串行數據輸入。
對于排列順序有規(guī)定的串并轉換,可以用case語句判斷實現。對于復雜的串并轉換,還可以用狀態(tài)機實現。串并轉換的方法比較簡單,在此不必贅述。
3、流水線操作設計思想
首先需要聲明的是,這里所講述的流水線是指一種處理流程和順序操作的設計思想,并非FPGA、ASIC設計中優(yōu)化時序所用的“Pipelining”。
流水線處理是高速設計中的一個常用設計手段。如果某個設計的處理流程分為若干步驟,而且整個數據處理是“單流向”的,即沒有反饋或者迭代運算,前一個步驟的輸出是下一個步驟的輸入,則可以考慮采用流水線設計方法來提高系統(tǒng)的工作頻率。
流水線設計的結構示意圖如圖3所示。其基本結構為:將適當劃分的n個操作步驟單流向串聯(lián)起來。流水線操作的最大特點和要求是,數據流在各個步驟的處理從時間上看是連續(xù)的,如果將每個操作步驟簡化假設為通過一個D觸發(fā)器(就是用寄存器打一個節(jié)拍),那么流水線操作就類似一個移位寄存器組,數據流依次流經D觸發(fā)器,完成每個步驟的操作。流水線設計時序如圖4所示。
流水線設計的一個關鍵在于整個設計時序的合理安排,要求每個操作步驟的劃分合理。如果前級操作時間恰好等于后級的操作時間,設計最為簡單,前級的輸出直接匯入后級的輸入即可;如果前級操作時間大于后級的操作時間,則需要對前級的輸出數據適當緩存才能匯入到后級輸入端;如果前級操作時間恰好小于后級的操作時間,則必須通過復制邏輯,將數據流分流,或者在前級對數據采用存儲、后處理方式,否則會造成后級數據溢出。
在WCDMA設計中經常使用到流水線處理的方法,如RAKE接收機、搜索器、前導捕獲等。流水線處理方式之所以頻率較高,是因為復制了處理模塊,它是面積換取速度思想的又一種具體體現。
4、數據接口的同步方法
數據接口的同步是FPGA/CPLD設計的一個常見問題,也是一個重點和難點,很多設計不穩(wěn)定都是源于數據接口的同步有問題。
在電路圖設計階段,一些工程師手工加入BUFT或者非門調整數據延遲,從而保證本級模塊的時鐘對上級模塊數據的建立、保持時間要求。還有一些工程師為了有穩(wěn)定的采樣,生成了很多相差90度的時鐘信號,時而用正沿打一下數據,時而用負沿打一下數據,用以調整數據的采樣位置。這兩種做法都十分不可取,因為一旦芯片更新?lián)Q代或者移植到其它芯片組的芯片上,采樣實現必須從新設計。而且,這兩種做法造成電路實現的余量不夠,一旦外界條件變換(比如溫度升高),采樣時序就有可能完全紊亂,造成電路癱瘓。
下面簡單介紹幾種不同情況下數據接口的同步方法:
1. 輸入、輸出的延時(芯片間、PCB布線、一些驅動接口元件的延時等)不可測,或者有可能變動的條件下,如何完成數據同步?
對于數據的延遲不可測或變動,就需要建立同步機制,可以用一個同步使能或同步指示信號。另外,使數據通過RAM或者FIFO的存取,也可以達到數據同步目的。
把數據存放在RAM或FIFO的方法如下:將上級芯片提供的數據隨路時鐘作為寫信號,將數據寫入RAM或者FIFO,然后使用本級的采樣時鐘(一般是數據處理的主時鐘)將數據讀出來即可。這種做法的關鍵是數據寫入RAM或者FIFO要可靠,如果使用同步RAM或者FIFO,就要求應該有一個與數據相對延遲關系固定的隨路指示信號,這個信號可以是數據的有效指示,也可以是上級模塊將數據打出來的時鐘。對于慢速數據,也可以采樣異步RAM或者FIFO,但是不推薦這種做法。
數據是有固定格式安排的,很多重要信息在數據的起始位置,這種情況在通信系統(tǒng)中非常普遍。通訊系統(tǒng)中,很多數據是按照“幀”組織的。而由于整個系統(tǒng)對時鐘要求很高,常常專門設計一塊時鐘板完成高精度時鐘的產生與驅動。而數據又是有起始位置的,如何完成數據的同步,并發(fā)現數據的“頭”呢?
數據的同步方法完全可以采用上面的方法,采用同步指示信號,或者使用RAM、FIFO緩存一下。
找到數據頭的方法有兩種,第一種很簡單,隨路傳輸一個數據起始位置的指示信號即可,對于有些系統(tǒng),特別是異步系統(tǒng),則常常在數據中插入一段同步碼(比如訓練序列),接收端通過狀態(tài)機檢測到同步碼后就能發(fā)現數據的“頭”了,這種做法叫做“盲檢測”。
上級數據和本級時鐘是異步的,也就是說上級芯片或模塊和本級芯片或模塊的時鐘是異步時鐘域的。
前面在輸入數據同步化中已經簡單介紹了一個原則:如果輸入數據的節(jié)拍和本級芯片的處理時鐘同頻,可以直接用本級芯片的主時鐘對輸入數據寄存器采樣,完成輸入數據的同步化;如果輸入數據和本級芯片的處理時鐘是異步的,特別是頻率不匹配的時候,則只有用處理時鐘對輸入數據做兩次寄存器采樣,才能完成輸入數據的同步化。需要說明的是,用寄存器對異步時鐘域的數據進行兩次采樣,其作用是有效防止亞穩(wěn)態(tài)(數據狀態(tài)不穩(wěn)定)的傳播,使后級電路處理的數據都是有效電平。但是這種做法并不能保證兩級寄存器采樣后的數據是正確的電平,這種方式處理一般都會產生一定數量的錯誤電平數據。所以僅僅適用于對少量錯誤不敏感的功能單元。
為了避免異步時鐘域產生錯誤的采樣電平,一般使用RAM、FIFO緩存的方法完成異步時鐘域的數據轉換。最常用的緩存單元是DPRAM,在輸入端口使用上級時鐘寫數據,在輸出端口使用本級時鐘讀數據,這樣就非常方便的完成了異步時鐘域之間的數據交換。
2. 設計數據接口同步是否需要添加約束?
建議最好添加適當的約束,特別是對于高速設計,一定要對周期、建立、保持時間等添加相應的約束。
這里附加約束的作用有兩點:
a. 提高設計的工作頻率,滿足接口數據同步要求。通過附加周期、建立時間、保持時間等約束可以控制邏輯的綜合、映射、布局和布線,以減小邏輯和布線延時,從而提高工作頻率,滿足接口數據同步要求。
b. 獲得正確的時序分析報告。幾乎所有的FPGA設計平臺都包含靜態(tài)時序分析工具,利用這類工具可以獲得映射或布局布線后的時序分析報告,從而對設計的性能做出評估。靜態(tài)時序分析工具以約束作為判斷時序是否滿足設計要求的標準,因此要求設計者正確輸入約束,以便靜態(tài)時序分析工具輸出正確的時序分析報告。
Xilinx和數據接口相關的常用約束有Period、OFFSET_IN_BEFORE、OFFSET_IN_AFTER、OFFSET_OUT_BEFORE和OFFSET_OUT_AFTER等;Altera與數據接口相關的常用約束有Period、tsu、tH、tco等。
《FPGA/CPLD應用設計200例》是應廣大科學研究人員、工程技術人員的迫切需求,參照國內外1000余項FPGA/CPLD應用設計成果,從實用角度出發(fā)編寫的。是一本具有實用性、啟發(fā)性、信息性的綜合工具書?!禙PGA/CPLD應用設計200例》共計典型應用設計實例287個,可供科學研究人員、工程技術人員、維護修理人員及大專院校師生在解決現代科研和生產中的許多實際問題時參考、借鑒。
內容簡介
CPLD/FPGA是目前應用最為廣泛的兩種可編程專用集成電路(ASIC),特別適合于產品的樣品開發(fā)與小批量生產。本書從現代電子系統(tǒng)設計的角度出發(fā),以全球著名的可編程邏輯器件供應商Xilinx公司的產品為背景,系統(tǒng)全面地介紹該公司的CPLD/FPGA產品的結構原理、性能特點、設計方法以及相應的EDA工具軟件,重點介紹CPLD/FPGA在數字系統(tǒng)設計、數字通信與數字信號處理等領域中的應用。本書內容新穎
目錄
第1章 可編程ASIC與EDA技術
第2章 Xilinx CPLD系列器件
第3章 Xilinx FPGA系列器件
第4章 CPLD/FPGA的邊界掃描測試
第5章 Xilinx Foundation應用基礎
第6章 Foundation高級應用
第7章 VHDL語言簡介
第8章 CPLD/FPGA在數字系統(tǒng)設計中的應用
第9章 CPLD/FPGA在通信領域的應用
第10章 CPLD/FPGA在DSP領域的應用
第11章 CPLD/FPGA在微機系統(tǒng)領域的應用
附錄 GW48型EDA實驗開發(fā)系統(tǒng)使用介紹
參考文獻
下載鏈接: