栗學(xué)麗
(山東大學(xué)微電子學(xué)院,濟(jì)南 250101)
數(shù)字信號處理是一門涉及眾多學(xué)科又應(yīng)用于眾多領(lǐng)域的學(xué)科,它的發(fā)展與現(xiàn)代科技進(jìn)步密切相關(guān)。目前大多數(shù)院校數(shù)字信號處理實(shí)驗(yàn)用Matlab、LabVIEW等高級編程軟件仿真實(shí)現(xiàn)。近年來,現(xiàn)場可編程門陣列(FPGA)已經(jīng)成為高性能數(shù)字信號處理系統(tǒng)的關(guān)鍵元件,這種基于并行硬件系統(tǒng)的并行程序設(shè)計(jì)與基于Matlab仿真的串行程序設(shè)計(jì)有很大的不同[1],造成集成電路與系統(tǒng)專業(yè)(下文簡稱集成電路專業(yè))的學(xué)生在以后的學(xué)習(xí)工作中不知如何將數(shù)字信號處理算法應(yīng)用到實(shí)際集成電路系統(tǒng)中,教學(xué)與工程實(shí)際脫節(jié)。隨著微電子技術(shù)的高速發(fā)展,這種實(shí)驗(yàn)課程內(nèi)容與社會(huì)需求脫節(jié)現(xiàn)象愈加明顯,產(chǎn)、學(xué)、研之間斷層嚴(yán)重[2]。這個(gè)問題,一直困擾著集成電路專業(yè)的數(shù)字信號處理實(shí)驗(yàn)教學(xué)。
通過分析集成電路專業(yè)的課程體系,設(shè)計(jì)了基礎(chǔ)型、開放型、項(xiàng)目式綜合型等多層次的實(shí)驗(yàn)內(nèi)容,提出以Matlab Simulink為編程工具,快速將圖形算法直接轉(zhuǎn)化為硬件描述語言(HDL)的實(shí)現(xiàn)方法,進(jìn)行硬件資源分析,軟硬件協(xié)同實(shí)驗(yàn),來凸顯集成電路專業(yè)特色。
通過研究集成電路的專業(yè)特點(diǎn),根據(jù)專業(yè)整個(gè)課程體系內(nèi)容的連貫性,在原有學(xué)時(shí)不變的情況下,增加、壓縮、調(diào)整數(shù)字信號處理的有關(guān)教學(xué)內(nèi)容。例如增加集成電路專業(yè)的實(shí)例演示,壓縮繁瑣的公式推導(dǎo),調(diào)整教學(xué)內(nèi)容,教材選用國內(nèi)經(jīng)典教材《數(shù)字信號處理教程》[3]。由于數(shù)字信號處理后續(xù)課程FPGA設(shè)計(jì)技術(shù)與應(yīng)用中,主要是做定點(diǎn)信號處理,所以增加有限字長效應(yīng)的講解,將數(shù)字濾波器的基本結(jié)構(gòu)這一章調(diào)整到最后,與數(shù)字信號處理中的有限字長效應(yīng)這一章合并,形成新的一章——數(shù)字濾波器的結(jié)構(gòu)與實(shí)現(xiàn),完成集成電路專業(yè)的電子設(shè)計(jì)自動(dòng)化(EDA)、數(shù)字信號處理、FPGA設(shè)計(jì)技術(shù)與應(yīng)用的整個(gè)課程體系的無縫銜接,具有集成電路的專業(yè)特點(diǎn)。數(shù)字信號處理實(shí)驗(yàn)是跟隨理論課的進(jìn)度進(jìn)行,相應(yīng)地也設(shè)計(jì)了基礎(chǔ)型、開放型、項(xiàng)目式綜合型等多層次實(shí)驗(yàn),全面提升學(xué)生理論聯(lián)系實(shí)際能力。要求以Matlab Simulink為編程工具,將圖形算法直接轉(zhuǎn)化為硬件描述語言,進(jìn)行硬件資源分析,通過軟硬件協(xié)同來設(shè)計(jì)最優(yōu)實(shí)現(xiàn)系統(tǒng)。從而學(xué)生能夠掌握從理論算法仿真到硬件系統(tǒng)實(shí)現(xiàn)的一套完整工程基本技能,解決教學(xué)與工程脫節(jié)的問題。
從Matlab到LabVIEW,再到Matlab Simulink一路摸索,試圖尋找一種更適合集成電路專業(yè)的實(shí)驗(yàn)工具。最開始和其他院校一樣,數(shù)字信號處理實(shí)驗(yàn)采用Matlab高級語言文本編程實(shí)現(xiàn)[4],Matlab豐富的函數(shù)和圖形顯示功能可以讓學(xué)生熟悉數(shù)字信號處理理論,但是學(xué)生的關(guān)注點(diǎn)大多在編程上,比著葫蘆畫瓢,與集成電路專業(yè)的工程實(shí)踐結(jié)合不多。隨后采用了LabVIEW圖形化編程實(shí)現(xiàn),LabVIEW前面板構(gòu)成的界面如同真實(shí)儀器的界面,程序框圖中的節(jié)點(diǎn)呈方形,四周有若干個(gè)接線端通過連線與其他節(jié)點(diǎn)相連,如同集成電路專業(yè)學(xué)生所熟悉的芯片電路設(shè)計(jì)一樣,將復(fù)雜的文本編程化為直觀的圖形編程,所以適合集成電路專業(yè)的學(xué)生使用[5]。但當(dāng)想進(jìn)一步將LabVIEW程序轉(zhuǎn)化為適用于FPGA的HDL代碼時(shí),發(fā)現(xiàn)LabVIEW的FPGA開發(fā)是針對NI公司的FPGA開發(fā)板[6],價(jià)格貴,對其他通用的FPGA目前還不能提供支持[7],所以就轉(zhuǎn)向了Matlab Simulink[8-10],它具有和LabVIEW類似的圖形化編程優(yōu)點(diǎn),并且能將圖形算法直接轉(zhuǎn)化為寄存器傳輸級(RTL)的HDL代碼,其可讀性和可移植性好,并且可以通過ModelSim進(jìn)行功能驗(yàn)證[11]。到后續(xù)課程FPGA設(shè)計(jì)技術(shù)與應(yīng)用的實(shí)驗(yàn)中,學(xué)生就可將此HDL綜合后下載到FPGA芯片中硬件實(shí)現(xiàn)。如果讓學(xué)生直接編寫HDL代碼,耗時(shí)就會(huì)很長,學(xué)生過度關(guān)注于編程,就會(huì)忽視對實(shí)驗(yàn)現(xiàn)象的觀察與分析。
通過Matlab Simulink,可以方便地將軟硬件相結(jié)合,①使學(xué)生直觀感受到數(shù)字信號處理算法的魅力,增強(qiáng)學(xué)生的學(xué)習(xí)興趣和加深對理論的理解;②可以將學(xué)生前后所學(xué)的電子設(shè)計(jì)自動(dòng)化HDL設(shè)計(jì)、數(shù)字信號處理算法、FPGA硬件實(shí)現(xiàn)的內(nèi)容貫通起來,凸顯集成電路的專業(yè)特色,提高集成電路專業(yè)學(xué)生的工程實(shí)踐能力;③Matlab Simulink相比Matlab、LabVIEW編程的數(shù)字信號處理參考資料要少,編程時(shí)要考慮并行流水線技術(shù)和定點(diǎn)化設(shè)計(jì)這些與硬件緊密結(jié)合的實(shí)際操作,迫使學(xué)生自己動(dòng)手開發(fā)程序。程序開發(fā)過程中出現(xiàn)的問題,恰恰能暴露出學(xué)生的知識誤區(qū)和漏點(diǎn),便于學(xué)生查漏補(bǔ)缺,鞏固知識。
下面就以最后一章數(shù)字濾波器結(jié)構(gòu)及實(shí)現(xiàn)的實(shí)驗(yàn)為例,介紹從基礎(chǔ)實(shí)驗(yàn)到開放性實(shí)驗(yàn),再到團(tuán)隊(duì)合作的項(xiàng)目式綜合實(shí)驗(yàn),通過Matlab Simulink編程實(shí)現(xiàn),凸顯集成電路專業(yè)特色,一步步提升學(xué)生的實(shí)際應(yīng)戰(zhàn)能力。
數(shù)字濾波器基本結(jié)構(gòu)這部分按照教材是要求學(xué)生掌握根據(jù)差分方程畫出結(jié)構(gòu)圖,學(xué)生學(xué)完后的感覺就是數(shù)學(xué)演算,偏理論,以前是沒有相應(yīng)的實(shí)驗(yàn),學(xué)生也沒有更深的體會(huì)。引入Simulink工具后,就可以在計(jì)算機(jī)上設(shè)計(jì)不同的濾波器結(jié)構(gòu),將抽象的理論可視化、具體化。對于無限長單位沖激響應(yīng)濾波器(IIR)設(shè)計(jì)了直接型、轉(zhuǎn)置型、級聯(lián)型、并聯(lián)型結(jié)構(gòu)的實(shí)驗(yàn),對于有限長單位沖激響應(yīng)濾波器(FIR)設(shè)計(jì)了直接型、轉(zhuǎn)置型、級聯(lián)型、頻率抽樣型、線性相位型結(jié)構(gòu)的實(shí)驗(yàn),要求用Simulink實(shí)現(xiàn)后,轉(zhuǎn)化為HDL,分別得出使用不同結(jié)構(gòu)的硬件資源情況,進(jìn)行比較,使學(xué)生關(guān)于濾波器結(jié)構(gòu)對硬件構(gòu)造的影響有更深入的理解。
圖1、2所示分別給出直接型7階FIR的結(jié)構(gòu)圖和Simulink程序,可見程序與結(jié)構(gòu)圖非常接近,可以很容易地快速實(shí)現(xiàn)。圖3、4所示分別給出7階FIR的轉(zhuǎn)置型和線性相位轉(zhuǎn)置型Simulink程序。點(diǎn)擊Simulink菜單Code下的HDL Code-HDL Workflow Advisor,經(jīng)過目標(biāo)設(shè)置、模型準(zhǔn)備、HDL代碼生成,就可以將Simulink程序轉(zhuǎn)化為Verilog HDL代碼。轉(zhuǎn)化過程中遇到不能直接轉(zhuǎn)化的高級模塊,需要用能轉(zhuǎn)化的最基本模塊自己搭建相應(yīng)的功能模塊。分析硬件實(shí)現(xiàn)的資源報(bào)告,得出最優(yōu)的設(shè)計(jì)方案。表1所示綜合了直接型、轉(zhuǎn)置型和線性相位轉(zhuǎn)置型7階FIR使用硬件資源的情況。乘法器、寄存器等硬件決定一個(gè)芯片的成本,關(guān)鍵路徑的延遲時(shí)間決定了其時(shí)鐘頻率。學(xué)生通過對比,就可以分析出這幾種結(jié)構(gòu)的優(yōu)劣勢。直接型包含一個(gè)較長的加法鏈,對于FPGA實(shí)現(xiàn)是不利的,而轉(zhuǎn)置型是直接型的等價(jià)結(jié)構(gòu),但它不包含長組合邏輯路徑,因而適合時(shí)序邏輯實(shí)現(xiàn)。線性相位轉(zhuǎn)置型節(jié)省了開銷較大的乘法器,但不能縮短關(guān)鍵路徑的延時(shí)。
圖1 直接型7階FIR的結(jié)構(gòu)圖
圖2 直接型7階FIR的Simulink程序
圖3 轉(zhuǎn)置型7階FIR Simulink程序
圖4 線性相位轉(zhuǎn)置型7階FIR Simulink程序
表1 直接型、轉(zhuǎn)置型和線性相位轉(zhuǎn)置型硬件實(shí)現(xiàn)資源比較
通過這個(gè)實(shí)驗(yàn),學(xué)生就會(huì)明白用不同的濾波器結(jié)構(gòu)實(shí)現(xiàn)就會(huì)帶來不同的延遲時(shí)間和產(chǎn)生不同的造價(jià),實(shí)際芯片實(shí)現(xiàn)時(shí)就要優(yōu)化處理,這就能將理論與實(shí)際很好地結(jié)合在一起,大大鍛煉了學(xué)生的實(shí)際應(yīng)用能力。
教材中對于有限字長的量化效應(yīng),給出許多數(shù)學(xué)公式推導(dǎo),比較繁瑣,學(xué)生理解不深刻。設(shè)計(jì)了定點(diǎn)化實(shí)驗(yàn),讓學(xué)生在上述濾波器結(jié)構(gòu)比較實(shí)驗(yàn)中,進(jìn)一步通過更改各變量屬性中的數(shù)據(jù)類型來改變它們的字長和小數(shù)位數(shù),如圖5所示,設(shè)定一參數(shù)h(0)為帶符號的16位字長、14位小數(shù)的定點(diǎn)數(shù)。還可以改變定點(diǎn)加法器量化和溢出的處理方式,觀察它們帶來的不同誤差結(jié)果和硬件資源使用情況,這也是FPGA實(shí)現(xiàn)中必須考慮的問題[12]。
圖5 數(shù)據(jù)類型的設(shè)定
學(xué)生可以通過示波器(Time Scope)模塊或頻譜圖(Spectrogram)模塊觀察實(shí)驗(yàn)現(xiàn)象,自己比較和分析實(shí)驗(yàn),折中考慮精度與資源,設(shè)計(jì)出最優(yōu)的硬件實(shí)現(xiàn)結(jié)構(gòu),并用于含噪聲音來測試濾波效果。這是一個(gè)開放性實(shí)驗(yàn),不要求千篇一律,鼓勵(lì)百花齊放,只要學(xué)生能說明自己設(shè)計(jì)結(jié)構(gòu)的優(yōu)勢即可,這有利于學(xué)生的發(fā)散思維和創(chuàng)新能力的培養(yǎng)。
項(xiàng)目式綜合實(shí)驗(yàn)[13-14],是對所學(xué)知識的綜合應(yīng)用,貼近工程實(shí)際與生活。教師設(shè)計(jì)出10個(gè)題目,分別是數(shù)字電子琴、虛擬信號發(fā)生器、信號頻譜分析儀、語音信號去噪處理器、雙音多頻電話撥號音的產(chǎn)生和檢測、數(shù)字調(diào)音臺(tái)、虛擬數(shù)碼錄音筆、語音變速不變調(diào)處理器、回聲信號產(chǎn)生及消除器、帶通連續(xù)信號抽樣及恢復(fù)的實(shí)現(xiàn)。學(xué)生自由組隊(duì)任選一個(gè)題目,各組題目不重復(fù),組員最多5人,團(tuán)隊(duì)分工合作課外3周內(nèi)完成。學(xué)生若對這些題目都不滿意,可以自擬題目,如4名學(xué)生組隊(duì)設(shè)計(jì)了變聲器,2名學(xué)生組隊(duì)設(shè)計(jì)了數(shù)字交通燈。教師只在預(yù)習(xí)課件里提出實(shí)驗(yàn)題目、簡介和反映集成電路專業(yè)特色的要求,如用Matlab Simulink編程實(shí)現(xiàn)后,進(jìn)行定點(diǎn)化,生成HDL硬件描述語言,進(jìn)行硬件資源分析,用EDA課上使用過的ModelSim進(jìn)行FPGA的功能驗(yàn)證等。從查閱資料、設(shè)計(jì)實(shí)驗(yàn)、完成實(shí)驗(yàn)、分析結(jié)果到寫出實(shí)驗(yàn)研究報(bào)告等環(huán)節(jié)全部由學(xué)生團(tuán)隊(duì)自主完成,學(xué)生可以通過雨課堂[15-16]的課程討論區(qū)、微信群與同學(xué)、教師在線隨時(shí)討論,教師會(huì)根據(jù)學(xué)生的問題提出指導(dǎo)性建議,起到引領(lǐng)和監(jiān)督的作用。
下面就以語音變速不變調(diào)處理器綜合實(shí)驗(yàn)為例說明實(shí)現(xiàn)過程,語音變速不變調(diào)技術(shù)是在時(shí)域壓縮或擴(kuò)展的同時(shí),盡量保持語音信號的基頻、音色和語義等特性不被改變,它廣泛應(yīng)用于語音壓縮、語言教學(xué)、影視制作以及人機(jī)交互等領(lǐng)域。圖6所示給出其Simulink關(guān)鍵程序,此程序轉(zhuǎn)化為Verilog HDL代碼多達(dá)175806行,使用256個(gè)乘法器,128個(gè)加法器,448個(gè)寄存器,7168個(gè)存儲(chǔ)位元。如果用EDA軟件直接編寫Verilog HDL代碼,工作量可想有多大,耗時(shí)有多長。而Simulink圖形化編程簡潔、可以快速轉(zhuǎn)化為Verilog HDL,這也顯示出使用Simulink實(shí)驗(yàn)的優(yōu)越性。實(shí)驗(yàn)過程中學(xué)生遇到語音分幀、加窗、重疊相加、流水線設(shè)計(jì)等問題,通過查資料和探討得以解決。當(dāng)基本功能實(shí)現(xiàn)后,又發(fā)現(xiàn)所用的buffer高級模塊無法轉(zhuǎn)Verilog HDL代碼的問題,還需自己重新設(shè)計(jì)分幀這一模塊。通過學(xué)生間、學(xué)生-教師間不斷討論,進(jìn)行方案修改,最終完成。這個(gè)過程中學(xué)生解決實(shí)際問題能力和團(tuán)隊(duì)合作能力都有很大的提高。
圖6 語音變速不變調(diào)處理器綜合實(shí)驗(yàn)的Simulink關(guān)鍵程序
考核采用課上小組答辯方式,每組學(xué)生都上臺(tái)講述各自貢獻(xiàn)、設(shè)計(jì)方案、演示設(shè)計(jì)效果、回答其他同學(xué)和教師的提問。答辯成績由其他同學(xué)和教師通過雨課堂進(jìn)行投票打分,由于每個(gè)人都參與,學(xué)生的積極性很高。
借助雨課堂智慧教學(xué)工具,使項(xiàng)目式綜合實(shí)驗(yàn)得以更順利開展。通過學(xué)生間、學(xué)生-教師間不斷的討論,澄清了學(xué)習(xí)中的誤區(qū),使學(xué)生真正明白課堂上所講授理論的應(yīng)用。根據(jù)學(xué)生實(shí)驗(yàn)中出現(xiàn)的問題,教師可利用雨課堂課后推送功能將資料推送到小組學(xué)生手機(jī)端,進(jìn)行個(gè)性化指導(dǎo)。考核利用了雨課堂的投票功能,全員參與評分,更客觀公正。
總之,項(xiàng)目式綜合實(shí)驗(yàn),運(yùn)用了Simulink編程工具和雨課堂教學(xué)工具,實(shí)驗(yàn)效果好。它鍛煉了學(xué)生分析問題、綜合解決問題和團(tuán)隊(duì)合作能力,學(xué)生反映收獲特別大。
以Matlab Simulink為編程工具,將圖形算法直接轉(zhuǎn)化為硬件描述語言,進(jìn)行硬件資源分析,這種軟硬件相結(jié)合的數(shù)字信號處理實(shí)驗(yàn)教學(xué)改革凸顯了集成電路專業(yè)特色。實(shí)踐后,發(fā)現(xiàn)學(xué)生的學(xué)習(xí)熱情、知識掌握程度、自主創(chuàng)新能力、團(tuán)隊(duì)合作能力等都有明顯提升?;A(chǔ)實(shí)驗(yàn)夯實(shí)了基本理論,開放式實(shí)驗(yàn)有利于創(chuàng)新。項(xiàng)目式綜合實(shí)驗(yàn),與實(shí)際生活、專業(yè)特色緊密相關(guān),提高了學(xué)生實(shí)驗(yàn)的興趣。且其綜合性的實(shí)驗(yàn)內(nèi)容,能將學(xué)生所學(xué)的知識串聯(lián)起來綜合應(yīng)用,充分檢測了學(xué)生知識的掌握程度。團(tuán)隊(duì)合作,集思廣益,有利于學(xué)生團(tuán)隊(duì)精神和自主創(chuàng)新精神的培養(yǎng)。