引言
數字系統是用來處理邏輯信息、對數字信號進行加工、傳輸和存儲電路的實體。最常見的數字系統包括計算機、計算器、數字音像設備、數字電話系統等。數字系統可被軟件和硬件共同控制,因此數字系統遠比模擬系統靈活。
隨著EDA 技術和工具的發展,現代數字系統的設計思想、設計工具和實現方式均發生了變化,已完成了由原理圖輸入向硬件描述語言HDL 設計的轉變,設計全程均有較完善的EDA 工具支持,采用FPGA 實現系統(直接做產品或者原型系統)已成為現代數字系統設計的主流做法。
1.FPGA 的開發流程
FPGA開發流程主要包括設計準備、設計輸入、綜合、仿真、適配、下載及硬件測試等步驟。系統設計之前,首先要進行方案論證、系統設計和芯片選擇等設計準備工作。設計者根據任務要求,選擇合適的設計方案和器件類型,通常采用自頂向下的設計方法。
設計輸入常用的方法是硬件描述語言和原理圖輸入方式,硬件描述語言主要有VHDL 和VerilogHDL 兩個IEEE 標準,不需對底層電路和FPGA結構很熟悉。原理圖輸入方式是一種最直接的描述方式,要求設計者有豐富的電路知識并對器件結構比較熟悉。
用戶所設計的電路必須在編譯之前進行邏輯功能驗證,即功能仿真,也叫前仿真。邏輯綜合通過后必須利用適配器將綜合后的網表文件針對某一具體的目標器件進行邏輯映射操作,其中包括底層器件配置、邏輯分割、邏輯優化、布線與操作,適配完成后可以利用適配所產生的仿真文件做精確的時序仿真。時序仿真完成后,軟件就可以產生供器件編程使用的數據文件,然后下載到對應的具體FPGA芯片中去。
2. 計時器電路的FPGA設計案例分析
(1)設計要求
本項目以計時器作為項目載體,本項目的計時器設計要求為:
①用6位數碼管顯示計時器的小時、分鐘和秒數值;②計時顯示范圍為24小時,最大顯示為23點59分59秒數值;③具有異步清零功能。
(2)功能描述
①秒脈沖產生將FPGA 的外圍高頻晶振分頻得到的秒脈沖,由一個分頻器模塊構成;②秒計時、分計時和小時計時電路由計數器構成,分別實現60進制和24進制加計數;③時間顯示用6位數碼管實現,采用動態顯示。
(3)計時器的層次化設計方案
根據上述功能,可以把計時器電路劃為三部分:計時器、分頻器和動態掃描顯示電路,分別用VHDL的結構化描述方式實現。
①分頻器
分頻器就是可將某高頻率的信號變為較低頻率信號的數字部件。將頻率為fs的信號進行N 分頻后的信號頻率為:fo=fs/N。本項目計時器的秒脈沖信號,以CPLD/FPGA 外圍使用20MHz 晶振為例,秒脈沖可由20MHz 信號經20M 分頻得到。
②顯示數據選擇模塊
計時器需要計2位小時、2位分鐘和2位秒。為了將小時、分鐘和秒區分顯示,如顯示14時52分36秒的格式為:14-52-36,因此采用8位LED數碼管,字符“-”可以用0~9之外的其它代碼譯碼得到,例如在第3 位和第6位要顯示字符“-”,在對應的位碼信號為“11011111”和“11111011”時,選擇顯示數據為“1010”,而在譯碼顯示電路中,再將“1010”轉換為“-”的段碼“0000001”即可實現上述顯示格式。用基于3線8線譯碼器的顯示數據選擇器,在第3 位和第6 位要顯示字符“-”,對應的位碼為“101”和“010”。
位碼產生模塊是在BCD-七段顯示譯碼器模塊segment 中增加字形“-”的段碼“0000001”。
將上述計時器的進行VHDL設計并編程配置到FPGA 芯片中,即完成本項目的設計。
結語
本文分析了現代數字系統設計的基本流程,探索并實踐了將FPGA技術引入數字電路的教學案例。設計一個計時器電路,讓學生利用新型的FPGA開發板進行實現,通過實踐,加強學生對知識點的理解和掌握,激發學生興趣。