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