版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《EDA技術(shù)》課程教學(xué)大綱課程編號(hào):04211283課程性質(zhì):專業(yè)方向課先修課程:數(shù)字電子技術(shù)適合專業(yè):電子科學(xué)與技術(shù)開設(shè)學(xué)期:第四學(xué)期考試方式:閉卷筆試總學(xué)時(shí)數(shù):54學(xué)分:3(一)課程教學(xué)目標(biāo)本課程是電類本科專業(yè)一門重要的專業(yè)課,是專業(yè)學(xué)生所必須具備的現(xiàn)代電子設(shè)計(jì)技術(shù)技能知識(shí)。EDA是電子技術(shù)的發(fā)展方向,也是電子技術(shù)教學(xué)中必不可少的內(nèi)容,隨著半導(dǎo)體和計(jì)算機(jī)技術(shù)的不斷發(fā)展,電子工程設(shè)計(jì)逐步實(shí)現(xiàn)了自動(dòng)化,即電子設(shè)計(jì)自動(dòng)化(ElectronicDesignAutomation,簡(jiǎn)稱EDA)。通過本課程的學(xué)習(xí),學(xué)生應(yīng)具備中小規(guī)??删庉嬤壿嬈骷拈_發(fā)能力,初步建立硬件電路思維,并掌握基礎(chǔ)的Verilog語(yǔ)法。在教學(xué)方式上,堅(jiān)持“以學(xué)生為中心”的原則,以項(xiàng)目任務(wù)驅(qū)動(dòng)的方式,采取理論知識(shí)與案例相結(jié)合的方式授課,提高學(xué)生的學(xué)習(xí)主動(dòng)性。通過必要的理論知識(shí)講授、大量的實(shí)踐訓(xùn)練和案例分析,培養(yǎng)學(xué)生的動(dòng)手設(shè)計(jì)和實(shí)踐能力,掌握EDA開發(fā)的整個(gè)流程和基本技巧。課程采用演示講授和實(shí)踐相結(jié)合,邊講邊練的方法,讓學(xué)生切身體會(huì)并掌握EDA開發(fā)產(chǎn)品的流程和方法。(二)課程的目的與任務(wù)本課程的任務(wù)主要是使學(xué)生了解現(xiàn)代電子線路設(shè)計(jì)自動(dòng)化的基本流程,了解CPLD和FPGA等可編程邏輯器件的硬件結(jié)構(gòu)、原理和特性;熟悉和掌握EDA設(shè)計(jì)方法、設(shè)計(jì)語(yǔ)言、開發(fā)軟件和設(shè)計(jì)實(shí)例。通過學(xué)習(xí),提高學(xué)生應(yīng)用計(jì)算機(jī)和設(shè)計(jì)軟件對(duì)電子電路進(jìn)行自動(dòng)化設(shè)計(jì)和分析的能力,為今后的學(xué)習(xí)和就業(yè)奠定基礎(chǔ)。(三)理論教學(xué)的基本要求了解EDA技術(shù)的一般內(nèi)涵和可編程邏輯器件的發(fā)展路線;理解FPGA的工作原理,理解Verilog中阻塞與非阻塞賦值的區(qū)別;掌握基于Verilog的常用組合邏輯電路和時(shí)序電路設(shè)計(jì)手段,掌握簡(jiǎn)單的同步有限狀態(tài)機(jī)設(shè)計(jì)過程。了解Testbench仿真步驟及常用的仿真語(yǔ)法。(四)實(shí)踐教學(xué)要求實(shí)驗(yàn)(上機(jī))學(xué)時(shí)18, 應(yīng)開實(shí)驗(yàn)項(xiàng)目個(gè)數(shù)6,可根據(jù)實(shí)際情況另外選開1-2個(gè)。具體實(shí)驗(yàn)參見實(shí)驗(yàn)課程標(biāo)準(zhǔn)。實(shí)驗(yàn)項(xiàng)目編號(hào)實(shí)驗(yàn)項(xiàng)目名稱實(shí)驗(yàn)內(nèi)容提要學(xué)時(shí)分配實(shí)驗(yàn)類型每組人數(shù)必開/選開0421128301簡(jiǎn)單組合電路設(shè)計(jì)自行選擇一個(gè)組合邏輯電路,完成代碼編譯,直至編譯成功,要求:學(xué)會(huì)新建quartusII工程,學(xué)會(huì)添加源代碼,并能夠修正常見的語(yǔ)法錯(cuò),鼓勵(lì)自行編譯代碼。3驗(yàn)證型3必開0421128302LED閃爍控制了解FPGA/CPLD器件,熟悉開發(fā)板;掌握Verilog的基礎(chǔ)語(yǔ)法,理解時(shí)序設(shè)計(jì)的手段;掌握QuartusII軟件的使用,能夠運(yùn)用QuartusII進(jìn)行設(shè)計(jì)和器件編程。3設(shè)計(jì)型3必開04211283031位數(shù)碼管靜態(tài)顯示掌握數(shù)碼管靜態(tài)顯示的硬件原理;掌握數(shù)碼管靜態(tài)顯示的編程方法;利用硬件實(shí)驗(yàn)開發(fā)板驗(yàn)證測(cè)試數(shù)碼管靜態(tài)顯示。6設(shè)計(jì)型3必開04211283048位數(shù)碼管動(dòng)態(tài)顯示掌握數(shù)碼管/點(diǎn)陣動(dòng)態(tài)顯示的硬件原理;掌握數(shù)碼管/點(diǎn)陣動(dòng)態(tài)顯示的編程方法;利用硬件實(shí)驗(yàn)開發(fā)板驗(yàn)證測(cè)試數(shù)碼管/點(diǎn)陣動(dòng)態(tài)顯示。6設(shè)計(jì)型3必開0421128305彩色LED組跑馬燈的實(shí)現(xiàn)學(xué)習(xí)利用CPLD控制彩色LED跑馬燈;掌握利用Verilog語(yǔ)言編寫LED跑馬燈源程序的方法。6設(shè)計(jì)型3選開0421128306數(shù)字鐘的設(shè)計(jì)設(shè)計(jì)一個(gè)具有時(shí)、分、秒顯示的數(shù)字鐘;要求該數(shù)字鐘具有校時(shí)、鬧時(shí)與整點(diǎn)報(bào)時(shí)功能。6設(shè)計(jì)型3選開(五)教學(xué)學(xué)時(shí)分配數(shù)理論課總學(xué)時(shí)32-36學(xué)時(shí),各章節(jié)分配如下:章次各章名稱總學(xué)時(shí)學(xué)時(shí)分配講課實(shí)驗(yàn)上機(jī)課外小計(jì)第1章EDA技術(shù)概論333第2章FPGA與CPLD的結(jié)構(gòu)原理333第3章組合電路的Verilog設(shè)計(jì)9639第5章時(shí)序電路的Verilog設(shè)計(jì)9639第6/7章EDA工具應(yīng)用深入及LPM宏模塊的應(yīng)用(選講)6336第8章Verilog設(shè)計(jì)深入6336第9章Verilog系統(tǒng)設(shè)計(jì)優(yōu)化6336第10章Verilog狀態(tài)機(jī)設(shè)計(jì)技術(shù)6336第13章Verilog語(yǔ)法補(bǔ)充說明333第14章TestBench仿真介紹(選講)333總計(jì)48-5430-361848-54(六)大綱內(nèi)容第1章 EDA技術(shù)概論教學(xué)目的:從電子電路的發(fā)展歷史引入EDA的概念,并介紹不同時(shí)期EDA的理念,使同學(xué)理解EDA的內(nèi)涵教學(xué)基本要求:掌握EDA的含義及應(yīng)用場(chǎng)合,了解EDA的典型開發(fā)過程及常用專業(yè)軟件,理解EDA綜合的含義。教學(xué)內(nèi)容:EDA技木及其發(fā)展、EDA技木的實(shí)現(xiàn)目標(biāo),Verilog與VHDL各自的發(fā)展歷史、HDL綜合以及EDA自上而下的設(shè)計(jì)技術(shù)。教學(xué)提示:EDA牽涉的專業(yè)名字極多,作為第一次上課,不要求學(xué)生過多的記憶相關(guān)專業(yè)術(shù)語(yǔ),而是盡可能使之理解EDA的涵義與作用,同時(shí)復(fù)習(xí)數(shù)字電子技術(shù)的相關(guān)專業(yè)知識(shí)。教學(xué)重點(diǎn)和難點(diǎn):EDA綜合的概念、HDL語(yǔ)言的概念學(xué)法指導(dǎo):課后主動(dòng)上網(wǎng)查閱資料,進(jìn)一步了解EDA的作用,激發(fā)學(xué)習(xí)興趣。作業(yè):用自己的話描述EDA綜合的過程。小結(jié):本章牽涉知識(shí)面很廣,主要是使學(xué)生初步建立EDA的概念,并簡(jiǎn)單介紹后續(xù)的章節(jié)安排。詳細(xì)大綱1.1EDA技木及其發(fā)展首先介紹早期的分立式元器件設(shè)計(jì)方法,以國(guó)外某發(fā)燒友花費(fèi)4年時(shí)間自制CPU為例,說明這種傳統(tǒng)設(shè)計(jì)方法的低效性。然后介紹從上世紀(jì)70年代到21世紀(jì)EDA技術(shù)的飛速發(fā)展,最終介紹狹義EDA與廣義EDA之分(本教材主要是狹義EDA技術(shù))1.2EDA技木實(shí)現(xiàn)目標(biāo)1) .可編程邏輯器件(講述重點(diǎn))2) .半定制或全定制ASIC3) .混合ASIC1.3硬件括述語(yǔ)言VerilogHDL(詳細(xì)介紹)VerilogHDL的特點(diǎn),與C語(yǔ)言接近,易于上手等。業(yè)界市場(chǎng)占有率>80%1.4其他常用HDLVHDL,以及VHDL與Verilog的比較。SystemVerilog和SystemC1.5HDL綜合:首先介紹不同層次上的綜合概念,然后將綜合與軟件編譯作對(duì)比圖1-2:編譯器和綜合的功能比較;圖1-3HDL綜合器運(yùn)行流程需要學(xué)生深入理解綜合的概念,不能與軟件編譯器的編譯相混淆1.6自頂向下的設(shè)計(jì)技術(shù)(詳細(xì)介紹)設(shè)計(jì)階段:(1)提出設(shè)計(jì)說明書(2)建立HDL行為模型(3)HDL行為仿真(4)HDL行為仿真 (5)HDL-RTL級(jí)建模(6)邏輯綜合 (7)測(cè)試向量生成(8)功能仿真 (9)結(jié)構(gòu)綜合(10)門級(jí)時(shí)序仿真 (11)硬件測(cè)試1.7 EDA技術(shù)的優(yōu)勢(shì)(簡(jiǎn)略帶過)1.8 EDA設(shè)計(jì)流程(在1.6的基礎(chǔ)上詳細(xì)講解)1.9ASIC設(shè)計(jì)流程:簡(jiǎn)單介紹1.10常用EDA工具要求學(xué)生至少熟悉quartusII和ModelSim/QuestaSim,Synplify和ISE作為進(jìn)階要求1.11QuartusII概述詳細(xì)講解,并要求掌握QuartuSII設(shè)計(jì)流程1-12IP核IP核的分類:軟IP、固IP和硬IP,介紹使用IP核的好處,1.13EDA技術(shù)發(fā)展趨勢(shì):簡(jiǎn)要介紹第2章 FPGA與CPLD的結(jié)構(gòu)原理教學(xué)目的:在第1章的學(xué)習(xí)基礎(chǔ)上,了解PLD器件的發(fā)展歷程,重點(diǎn)掌握可編程邏輯器件(CPLD)及現(xiàn)場(chǎng)可編程門陣列(FPGA)的基本原理。教學(xué)基本要求:掌握與陣列與或陣列的含義,理解LUT實(shí)現(xiàn)任意組合邏輯的工作原理,了解JTAG接口信號(hào)及典型的FPGA配置電路。教學(xué)內(nèi)容:PLD概述、簡(jiǎn)單PLD工作原理、CPLD與FPGA的結(jié)構(gòu)原理、大規(guī)模PLD產(chǎn)品概述、CPLD/FPGA的編程與配置。教學(xué)提示:第2章學(xué)習(xí)過程中需要學(xué)生具備一定的數(shù)字電子技術(shù)基礎(chǔ)知識(shí),包括常用的組合邏輯基本操作電路、以及觸發(fā)器特性,講述時(shí)需要及時(shí)引導(dǎo)學(xué)生復(fù)習(xí)上述知識(shí)。教學(xué)重點(diǎn)和難點(diǎn):基于LUT的組合邏輯結(jié)構(gòu)、可編程IO結(jié)構(gòu)、FPGA的配置方式學(xué)法指導(dǎo):積極與學(xué)生互動(dòng),溫故而知新,使學(xué)生掌握LUT的工作原理。作業(yè):FPGA與其它PLD相比,有哪些特點(diǎn)?小結(jié):本章主要從硬件電路角度解釋PLD的發(fā)展歷史和工作原理,尤其是FPGA的內(nèi)部結(jié)構(gòu),要求學(xué)生在基礎(chǔ)數(shù)電知識(shí)的基礎(chǔ)上,理解FPGA如何實(shí)現(xiàn)任意組合邏輯和時(shí)序電路功能,以更好地理解Verilog的硬件實(shí)現(xiàn)載體。詳細(xì)大綱2.1 PLD概述:首先回憶數(shù)字電路的基礎(chǔ)知識(shí),所有組合邏輯電路都可以表示成乘積項(xiàng)的或表達(dá)式。并由此引入PLD的原理結(jié)構(gòu)圖,然后簡(jiǎn)要介紹PLD的發(fā)展、分類(按照集成度、按照編程工藝,在介紹編程工藝時(shí)介紹EPROM、flash、SRAM等基礎(chǔ)知識(shí),介紹RAM與ROM的優(yōu)缺點(diǎn))2.2簡(jiǎn)單PLD結(jié)構(gòu)原理2.2.1邏輯元件符號(hào)表示(注意強(qiáng)調(diào)本課程釆用的邏輯門的符號(hào)為IEEE1991版標(biāo)準(zhǔn)邏輯符號(hào),不再是原來數(shù)字電路課程里面學(xué)習(xí)的IEEE1984版符號(hào),并提到咱們GB的陳舊性)2-2-2PROM結(jié)構(gòu)原理增加板書,介紹PROM的基本概念、特點(diǎn)、對(duì)外接口。首先用數(shù)組的概念來引導(dǎo)學(xué)生實(shí)現(xiàn)可編程邏輯。然后利用半加器的邏輯表達(dá)式介紹PROM的與陣列固定,或陣列可編程的結(jié)構(gòu)和編程原理,導(dǎo)出該方法的缺點(diǎn)。2-2-3PLA結(jié)構(gòu)原理由PROM結(jié)構(gòu)的缺點(diǎn)導(dǎo)出PLA的與或陣列均可編程的結(jié)構(gòu)原理,并與PROM進(jìn)行比較。最后給出PLA結(jié)構(gòu)的缺點(diǎn)。2-2.4PAL結(jié)構(gòu)原理由PLA結(jié)構(gòu)的缺點(diǎn)導(dǎo)出PAL的與陣列可編程或陣列固定的結(jié)構(gòu)原理讓同學(xué)們學(xué)會(huì)看懂圖2-16PAL的常用表示,并介紹PAL的缺點(diǎn):IO不靈活,只能一次編程。2-2-5主要講授GAL與PAL結(jié)構(gòu)上的相同點(diǎn)和不同點(diǎn)。GAL中OLMC的三種模式簡(jiǎn)單帶過。2.3CPLD的結(jié)構(gòu)原理以MAX3000A結(jié)構(gòu)為例,首先是整體介紹,然后講授其五個(gè)主要部分:邏輯陣列塊(LAB)、宏單元、擴(kuò)展乘積頂(共享和并聯(lián))、可編程連線陣列和IO控制塊。2.4FPGA的結(jié)構(gòu)原理首先介紹FPGA的主要生產(chǎn)廠家,然后引入查找表(LUT)結(jié)構(gòu)讓學(xué)生建立查找表的概念介紹LE的結(jié)構(gòu),基本與CPLD類似,只是前面的與或陣列變成了LUT。多個(gè)LE又組成了LAB介紹M9K,詳細(xì)介紹RAM的發(fā)展,異步RAM,同步RAM,動(dòng)態(tài)RAM,靜態(tài)RAM,可畫時(shí)序圖及結(jié)構(gòu)圖,引入同步時(shí)鐘的概念。嵌入式乘法器:介紹必要性,內(nèi)部結(jié)構(gòu)不作要求時(shí)鐘:強(qiáng)調(diào)時(shí)鐘的重要性,專用時(shí)鐘引腳、PLL、全局時(shí)鐘,解釋全局時(shí)鐘的目的,不只是延時(shí)小,更重要的是保證時(shí)鐘沿到各個(gè)寄存器的一致性??删幊蘄O:主要介紹常用的電平,LVTTL、LVCMOS、LVDS重點(diǎn)介紹,基于電流源的驅(qū)動(dòng)、速度快2.5硬件測(cè)試:主要介紹JTAG技術(shù),以及在實(shí)際應(yīng)用中JTAG如何使用,4根信號(hào)含義2.6大規(guī)模PLD產(chǎn)品概述(本部分幾句帶過,自學(xué))2.7CPLD/FPGA的編程與配置對(duì)教材的三種分類作了修正,將EEPROM和flash分開,共4種介紹CPLD和FPGA的配置電路,F(xiàn)PGA脫機(jī)運(yùn)算外部需要加配置芯片或單片機(jī)等注意JTAG可以級(jí)聯(lián)強(qiáng)調(diào)CPLD的編程與FPGA的配置之間概念的區(qū)別,7種配置方式2.7.3 FPGA專用配置器件(簡(jiǎn)略介紹)Altera的可重復(fù)編程配置器件:EPC系列,EPCS系列2.7.4使用單片機(jī)配置FPGA(自學(xué))2.7.5使用CPLD配置FPGA(自學(xué))第3章 組合電路的Verilog設(shè)計(jì)教學(xué)目的:在第2章的學(xué)習(xí)基礎(chǔ)上,從典型的組合邏輯電路出發(fā),正式引入Verilog設(shè)計(jì)方法學(xué),學(xué)會(huì)常用的assign語(yǔ)句和always語(yǔ)句用法。教學(xué)基本要求:掌握Verilog的程序典型框架,學(xué)會(huì)模塊化設(shè)計(jì)準(zhǔn)則。教學(xué)內(nèi)容:組合電路的Verilog描述、半加器電路的Verilog描述、多路選擇器的Verilog描述、Verilog加法器設(shè)計(jì)、組合邏輯乘法器設(shè)計(jì)、RTL的概念。教學(xué)提示:注意引導(dǎo)學(xué)生逐步建立硬件電路思維,學(xué)習(xí)Verilog語(yǔ)法的同時(shí)與C語(yǔ)言進(jìn)行對(duì)比,找出二者的本質(zhì)區(qū)別。教學(xué)重點(diǎn)和難點(diǎn):子模塊實(shí)例化與C語(yǔ)言子程序的聯(lián)系和區(qū)別、reg型變量和wire型變量區(qū)別學(xué)法指導(dǎo):積極互動(dòng),隨時(shí)與C語(yǔ)言對(duì)比,盡快建立硬件思維。作業(yè):設(shè)計(jì)三種基礎(chǔ)邏輯門電路的Verilog程序。小結(jié):從本章開始,學(xué)習(xí)的重點(diǎn)轉(zhuǎn)向Verilog設(shè)計(jì),由于學(xué)生的編程功底較弱,需要在講解時(shí)注意控制進(jìn)度,盡可能使絕大多數(shù)同學(xué)消化吸引關(guān)鍵知識(shí)點(diǎn),并掌握常見組合邏輯電路的設(shè)計(jì)方式。詳細(xì)大綱引言:介紹Verilog的整體特點(diǎn),學(xué)習(xí)方法,要求學(xué)生用硬件電路的角度理解Verilog。3.1組合電路的Verilog描述以簡(jiǎn)單的二選一數(shù)據(jù)選擇器設(shè)計(jì)為例,分析其結(jié)構(gòu)框圖及邏輯表達(dá)式,然后給出Verilog代碼,介紹Verilog的模塊、端口、assign語(yǔ)句。在例3-1的基礎(chǔ)上,總結(jié)Verilog模塊設(shè)計(jì)的基本框架,與C語(yǔ)言作類比,方便學(xué)生理解。并繼續(xù)例3-2的學(xué)習(xí),引入always過程(Beginend塊)、reg型變量、Case的概念。強(qiáng)調(diào)reg型并非一定是寄存器。并初步講授reg型與wire型各自的主要應(yīng)用范圍。介紹邏輯狀態(tài)01XZ,Verilog數(shù)據(jù)位寬的表達(dá)、以及位拼接運(yùn)算符。自例3-2之后的例子不再一一細(xì)講,以學(xué)生自學(xué)主主,課堂上以基礎(chǔ)語(yǔ)法為主,包括:按位邏輯操作、等式表達(dá)、注釋、條件判斷、阻塞與非阻塞、數(shù)據(jù)位寬、模塊實(shí)例化。第5章 時(shí)序電路的Verilog設(shè)計(jì)教學(xué)目的:在第3章的學(xué)習(xí)基礎(chǔ)上,逐步從組合邏輯電路推廣至?xí)r序電路設(shè)計(jì)。教學(xué)基本要求:掌握基礎(chǔ)觸發(fā)器、鎖存器的描述方式,學(xué)會(huì)計(jì)數(shù)器設(shè)計(jì)手段。教學(xué)內(nèi)容:基本時(shí)序元件的Verilog表述、二進(jìn)制計(jì)數(shù)器及其Verilog表述、移位寄存器的Verilog表述與設(shè)計(jì)、可預(yù)置型計(jì)數(shù)器設(shè)計(jì)。教學(xué)提示:時(shí)序電路和組合電路的Verilog描述從形式上看比較相似,需要學(xué)生從敏感信號(hào)量形式和條件分支是否完整的角度判斷,應(yīng)逐步做到看到的是代碼,心中想的是電路圖。教學(xué)重點(diǎn)和難點(diǎn):同步復(fù)位與異步復(fù)位的區(qū)別、鎖存器與觸發(fā)器的描述差異學(xué)法指導(dǎo):先介紹應(yīng)用實(shí)例,再詳解具體語(yǔ)法,要求掌握每一種語(yǔ)法背后的硬件電路含義。作業(yè):設(shè)計(jì)簡(jiǎn)單的計(jì)數(shù)器Verilog程序。小結(jié):時(shí)序電路的描述比組合電路更為靈活,需要學(xué)生多加練習(xí),并逐步具備自行編寫代碼的能力。詳細(xì)大綱5.1時(shí)序電路設(shè)計(jì)從基本的D觸發(fā)器引入,介紹邊沿觸發(fā)理念,然后以鎖存器為例,對(duì)比二者的差異,要求學(xué)生盡量避免鎖存器的使用。為D觸發(fā)器引入異步復(fù)位和使能端,強(qiáng)調(diào)異步復(fù)位的重要性,針對(duì)時(shí)序電路,分支描述可以不完整。介紹同步復(fù)位與異步復(fù)位區(qū)別,分析同步復(fù)位代碼的實(shí)現(xiàn),并深入理解異步復(fù)位形式上雖然是邊沿觸發(fā),但實(shí)質(zhì)上是電平觸發(fā)的概念。異步復(fù)位鎖存器不再介紹,同學(xué)自學(xué)關(guān)于異步時(shí)序電路,首先介紹同步時(shí)序電路,并對(duì)比二者,強(qiáng)調(diào)同步時(shí)序電路的優(yōu)點(diǎn)。盡量在實(shí)際設(shè)計(jì)中保證同步設(shè)計(jì)。5.2完整的模10計(jì)數(shù)器設(shè)計(jì)完整分析一個(gè)功能齊全的代碼,其中新概念是關(guān)系比較運(yùn)算,與C語(yǔ)言一樣。注意:<=可以同時(shí)表示非阻塞賦值或者是小于等于,具體是哪一種含義則要看它的所處位置。第8章 Verilog設(shè)計(jì)深入教學(xué)目的:在掌握Verilog基礎(chǔ)語(yǔ)法的基礎(chǔ)上,深入學(xué)習(xí)阻塞與非阻塞賦值的本質(zhì)區(qū)別,使學(xué)生真正建立硬件思維;理解Verilog中的高阻態(tài)描述,并學(xué)會(huì)利用高阻態(tài)實(shí)現(xiàn)三態(tài)及雙向數(shù)據(jù)總線。教學(xué)基本要求:在掌握Verilog基礎(chǔ)語(yǔ)法的基礎(chǔ)上,進(jìn)一步提高對(duì)部分關(guān)鍵語(yǔ)法特質(zhì)的理解,尤其是2種賦值方式的區(qū)別和雙向數(shù)據(jù)總線的實(shí)現(xiàn)、過程中的兩類賦值語(yǔ)句。教學(xué)內(nèi)容:過程中的兩類賦值語(yǔ)句、過程語(yǔ)句應(yīng)用總結(jié)、不完整條件語(yǔ)句與時(shí)序電路的關(guān)系、if語(yǔ)句歸納、三態(tài)與雙向端口設(shè)計(jì)。教學(xué)提示:非阻塞賦值在實(shí)際運(yùn)行中仍然是串行執(zhí)行的,但由于它的表達(dá)式計(jì)算與操作數(shù)更新分開進(jìn)行,導(dǎo)致了最終運(yùn)算結(jié)果等價(jià)于并行執(zhí)行,這是其與阻塞賦值的本質(zhì)差異。學(xué)法指導(dǎo):借用信號(hào)與系統(tǒng)中的沖激函數(shù)概念,可以有效的幫助學(xué)生理解非阻塞賦值的實(shí)質(zhì)。作業(yè):如何利用阻塞賦值達(dá)到非阻塞賦值的效果?小結(jié):這一章內(nèi)容并不多,但對(duì)切實(shí)提高學(xué)生的編程能力十分關(guān)鍵,尤其是阻塞與非阻塞賦值,這是Verilog語(yǔ)言中的著名難點(diǎn),也是其特有的語(yǔ)法現(xiàn)象,甚至許多具有多年經(jīng)驗(yàn)的FPGA工程師也未能完全理清該問題。初學(xué)者更是對(duì)并發(fā)執(zhí)行的特性難以接受。事實(shí)上,借用沖激函數(shù)概念,可以更好地幫助學(xué)生理解非阻塞賦值的實(shí)質(zhì)。詳細(xì)大綱8.1 兩種賦值語(yǔ)句Verilog的著名難點(diǎn):阻塞與非阻塞賦值,阻塞賦值英文是un-blockingassignment,它可以出現(xiàn)在兩種場(chǎng)合,一種是Assign語(yǔ)句,一種是always塊內(nèi)部,其中assign語(yǔ)句只能使用非阻塞語(yǔ)句,這是語(yǔ)法決定的。但always塊內(nèi),則是即可以是阻塞賦值,也可以是非阻塞賦值。阻塞賦值的執(zhí)行分成三步:首先是計(jì)算右邊表達(dá)式的值,然后是賦值給左邊操作數(shù),最后完成賦值,只要賦值語(yǔ)句中沒有延時(shí)語(yǔ)句,這三個(gè)步驟不能分開,一旦開始賦值就要完成操作,目標(biāo)變量的值即刻更新。阻塞賦值的這種執(zhí)行過程,主要是繼承了軟件編程語(yǔ)言的順序執(zhí)行語(yǔ)句。而非阻塞賦值是Verilog特有的一種賦值方式,它是為了適應(yīng)硬件電路的運(yùn)行特點(diǎn)而產(chǎn)生的。它的執(zhí)行也可以分成三個(gè)步驟:運(yùn)算、賦值、賦值完成。但是它在運(yùn)算完成后,就不再繼續(xù)執(zhí)行,而是執(zhí)行另外的同類型非阻塞賦值語(yǔ)句的運(yùn)算操作,在所有非阻塞賦值語(yǔ)句的運(yùn)算操作都完成后,然后再統(tǒng)一進(jìn)行賦值操作(即所謂并行執(zhí)行理念)。最后全部賦值完成。以教材上例5-1和例5-2為例,分析二者的區(qū)別:首先假定A,B初值都是零,然后在同一時(shí)刻變成1,對(duì)例5-1,順序執(zhí)行阻塞賦值,因此M1/M2/Q都是1,對(duì)例5-2,它采用的是非阻塞賦值,在A、B沒有變化前,按照代碼書寫內(nèi)容,M1、M2、Q都為零,而在變化的時(shí)刻,這三條語(yǔ)句會(huì)同時(shí)開始計(jì)算表達(dá)式的值,可以看到,對(duì)M1的賦值,計(jì)算結(jié)果為1、M2的,注意它開始計(jì)算時(shí)M1還沒有更新,因此這時(shí)M1仍為原值零,M2賦值為零,同樣,Q賦值M1和M2的或,但此時(shí)M1和M2都沒有更新,因此最終Q也為零。如果是在時(shí)序電路中,阻塞賦值與非阻塞賦值的差異更大,它會(huì)直接導(dǎo)致綜合后電路的明顯差異。以下分析時(shí)序電路中采用兩種賦值的對(duì)比:首先分析非阻塞賦值,它定義了三個(gè)寄存型變量,a,b,q,按照非阻塞賦值的執(zhí)行過程來分析,在一個(gè)時(shí)鐘沿到來時(shí),過程被激活運(yùn)行,三條語(yǔ)句同時(shí)計(jì)算表達(dá)式的值,然后一同更新。首先在上升沿時(shí)刻,D的值被a寄存,這對(duì)應(yīng)硬件電路上的什么結(jié)構(gòu)?1個(gè)D寄存器,然后呢,下一條語(yǔ)句是b<=a,注意這時(shí)候a的值還沒有更新,因此,相當(dāng)于把a(bǔ)的老值寄存給b,這又對(duì)應(yīng)一個(gè)寄存器,同樣地,Q<=b也對(duì)應(yīng)一個(gè)寄存器。因此,我們從整體的角度看,這樣的非阻塞賦值代碼最終綜合后是三個(gè)寄存器級(jí)聯(lián)。而如果是阻塞賦值,a=D,一個(gè)寄存器,接下來b=a,這時(shí)候a已經(jīng)更新成D的值了,因此相當(dāng)于b=D,同樣地Q=D,因此這種寫法最終導(dǎo)致a,b,Q三個(gè)變量的值始終都是一樣的,它們都是D變量的寄存器輸出,綜合后只有一個(gè)寄存器。這里可以看出明顯差異,所以,一般在時(shí)序電路設(shè)計(jì)中,建議使用非阻塞賦值。為加深理解,可介紹二者混用的例子例5-7中,雖然a1寫在前面,但它采用的是非阻塞賦值,因此它的值不會(huì)立刻更新,而b1采用的是阻塞賦值,一旦啟動(dòng)就立刻更新,因此,b1反而a1更早完成更新,這就是二者的區(qū)別。當(dāng)然,像這種混用的寫法,我們實(shí)際中不會(huì)這樣做,可讀性太差,一般我們不建議阻塞和非阻塞賦值同時(shí)在一個(gè)塊中出現(xiàn)。注意:特定順序的阻塞賦值也可以實(shí)現(xiàn)多級(jí)移位寄存器電路呢,但是不推薦使用,可讀性差,這也更進(jìn)一步印證了時(shí)序電路中最好采用非阻塞賦值的結(jié)論??偨Y(jié)非阻塞與阻塞賦值關(guān)于阻塞與非阻塞,教材上給出了許多混用例子,但這些例子都只是為了說明二者的區(qū)別而構(gòu)建的,現(xiàn)實(shí)中不建議使用。對(duì)于組合電路,為了保證邏輯正確,最好用阻塞賦值,用非阻塞會(huì)導(dǎo)致賦值更新不及時(shí)影響后面的判斷。而對(duì)時(shí)序電路,為了保證寄存器不被優(yōu)化掉,就最好用非阻塞賦值,以免后面賦值直接用到新值。8.2過程結(jié)構(gòu)總結(jié)1:過程與軟件的函數(shù)有相似又有差異,過程具有無限循環(huán)特性,只要敏感信號(hào)量發(fā)生變化,就會(huì)自動(dòng)運(yùn)行,運(yùn)行完畢后進(jìn)入等待狀態(tài),等待再次運(yùn)行。2、過程中語(yǔ)句具有并行性,從仿真角度看,always塊中無論包含了多少語(yǔ)句,只要過程啟動(dòng),執(zhí)行時(shí)間無限小,而與是不是阻塞賦值無關(guān)(與軟件有很大差異,軟件代碼越多,執(zhí)行時(shí)間越長(zhǎng),)Verilog要描述硬件電路的行為,所以,Verilog仿真不像軟件可以單步調(diào)試的,它只能是一個(gè)時(shí)間軸上的仿真,通過查看不同時(shí)刻變量的變化情況來確定代碼功能是否正常。3、不同過程之間是并行的:多個(gè)always塊是完全并行的,誰寫前面是沒有任何區(qū)別。當(dāng)然不一定大家都在執(zhí)行,具體每個(gè)過程是否在執(zhí)行狀態(tài)是看它的敏感信號(hào)量是否滿足,這是軟件語(yǔ)言無論如何實(shí)現(xiàn)不了的。4、時(shí)序過程中只能存在單一時(shí)鐘沿邏輯:主要是從代碼對(duì)應(yīng)的硬件電路角度來考慮,最終時(shí)序電路是要映射到寄存器,而寄存器只有一個(gè)觸發(fā)時(shí)鐘,如果既想在上升沿作操作,也想在下降沿作處理,需要分成多個(gè)always塊,而且阻塞與非阻塞不要混用。5、關(guān)于分支的完整性:在時(shí)序電路中,分支可以不完整,但在組合電路中,如果分支不完整,就很可能有問題(解釋為什么會(huì)生成鎖存器)。8.3 移位寄存器設(shè)計(jì)回憶數(shù)字電路中的移位寄存器知識(shí),介紹其用處(串并轉(zhuǎn)換)。分析例5-14,在LOAD為高時(shí)讀入預(yù)置數(shù),然后每個(gè)時(shí)鐘周期數(shù)據(jù)右移一次,QB相當(dāng)于把DIN的數(shù)據(jù)轉(zhuǎn)化成串行數(shù)據(jù),從最低位開始,一位一位輸出(分析時(shí)序圖)。其它功能更完整的移位寄存器由學(xué)生自學(xué),另外,Verilog中也有專門的移位運(yùn)算符>>,<<(95標(biāo)準(zhǔn),它移出騰空的位都是用0來填充),在Verilog2001標(biāo)準(zhǔn)中又新增對(duì)有符號(hào)數(shù)的移位,<<</>>>,更方便。8.4 硬件乘法器設(shè)計(jì)這一節(jié)內(nèi)容其中真正的重點(diǎn)并不是要求大家學(xué)會(huì)如何設(shè)計(jì)硬件乘法器,而是讓大家學(xué)習(xí)一些新的Verilog語(yǔ)法,關(guān)于硬件乘法器的設(shè)計(jì),不要求大家掌握,事實(shí)上,現(xiàn)在FPGA內(nèi)部都是有現(xiàn)成的IP核,大家直接拿來調(diào)用即可。1、 parameter:非常實(shí)用的功能,與C語(yǔ)言的宏定義非常相似,使模塊具有可重構(gòu)性(介紹parameter的用法,并板書實(shí)例,如一個(gè)參數(shù)可變加法器,需要注意的是parameter只對(duì)當(dāng)前模塊范圍有效)。2、 整數(shù)類型:類似于C語(yǔ)言的int型,integer,固定32位位寬,主要用在循環(huán)體變量中。3、 for循環(huán):for循環(huán)在C語(yǔ)言中應(yīng)用的極其普遍,Verilog中雖然也有for循環(huán),但卻很少應(yīng)用,這也是由于硬件電路的特性決定的,for循環(huán)經(jīng)過綜合之后相當(dāng)于把所有循環(huán)體展開,這意味著大量的硬件復(fù)制,所以一般可綜合代碼中很少用for循環(huán),格式與C語(yǔ)言完全相同,只不過Verilog中沒有C語(yǔ)言的++、--運(yùn)算符,因此這里循環(huán)條件不能簡(jiǎn)寫,循環(huán)變量一般定義成integer類型(for循環(huán)示例)。4、 repeat循環(huán):直接規(guī)定循環(huán)次數(shù),使用起來更為簡(jiǎn)潔5、 while:借用了C語(yǔ)言的語(yǔ)法,只要條件為真就執(zhí)行(循環(huán)示例)6、 還有一種forever,不可綜合,主要用于仿真,類似于while(1),也就是我們常說的死循環(huán),后面我們介紹仿真時(shí)再詳細(xì)介紹其用法。(循環(huán)語(yǔ)句總結(jié))總共4種循環(huán)語(yǔ)句,其中for和While都和C語(yǔ)言基本一致,repeat和forever則是Verilog特有,但總體上,這些循環(huán)語(yǔ)句主要是在仿真中使用,RTL級(jí)設(shè)計(jì)中用處不大,寫RTL代碼的目的是高效的硬件電路實(shí)現(xiàn),而不是追求精致的代碼,教材上雖然給出了多個(gè)使用循環(huán)語(yǔ)句構(gòu)建硬件乘法器的例子,但沒有實(shí)用價(jià)值,如果需要使用硬件乘法器,請(qǐng)直接使用FPGA廠商提供的IP核。8.5 IF語(yǔ)句一般用法1、不完整的分支語(yǔ)句,意味著有記憶,是時(shí)序電路,所以一般在寄存器設(shè)計(jì)中使用2、2個(gè)分支,即可以是組合也可以是時(shí)序,具體情況具體分析(還可以板書,寫完整分支的D觸發(fā)器)3、多分支的ifelse語(yǔ)句,也是完整分支,同樣地,可以是組合也可以是時(shí)序2種條件語(yǔ)句,一種是ifelse,還有一種是case語(yǔ)句,多重ifelse語(yǔ)句是有優(yōu)先級(jí)的,而case則是平級(jí),通過優(yōu)先編碼器介紹優(yōu)先級(jí)概念PPT17(優(yōu)先編碼器實(shí)現(xiàn))教材上給這種優(yōu)先編碼器給出了2種實(shí)現(xiàn)方式,右邊是多分支ifelse語(yǔ)句,這個(gè)比較容易理解。左邊是一種case語(yǔ)句的變種,casez,casez的含義是如果比較的某一位是高阻態(tài),那么這一位就不再比較,所以左邊這種寫法也可以達(dá)到優(yōu)先編碼的目的,但是需要說明的是casez語(yǔ)句不在標(biāo)準(zhǔn)的可綜合語(yǔ)句之列,也就是說并非所有的綜合器都能對(duì)例5-2完成綜合,因此,我們?cè)趯?shí)際設(shè)計(jì)中,不要采用casez的方式(與之相類似,還有一個(gè)casex,它只要比較對(duì)象中某一位是不定態(tài),也不作比較)8.6 三態(tài)與雙向端口設(shè)計(jì)inout類型端口在對(duì)外接口中十分常用,也是Verilog的另外一個(gè)難點(diǎn)。在學(xué)習(xí)inout之前,復(fù)習(xí)數(shù)字電路中的知識(shí),介紹高阻態(tài)(解釋高阻態(tài)的含義),們之所以能實(shí)現(xiàn)雙向端口,就是因?yàn)橛懈咦钁B(tài)在里面。板書:畫三態(tài)門符號(hào),并解釋其特征。通過實(shí)際的例子,來學(xué)習(xí)如何實(shí)現(xiàn)三態(tài)門。解釋例(5-26)中新的狀態(tài)Z,如果ena不為1,也就是為零,那么DOUT就變成高阻態(tài)。這就實(shí)現(xiàn)了一個(gè)4位的三態(tài)門。關(guān)于高阻態(tài):只能用于設(shè)計(jì)的引腳端口級(jí),而不能用于模塊內(nèi)部信號(hào),因?yàn)镕PGA,CPLD內(nèi)部沒有三態(tài)門的,只有LUT、寄存器這些資源,所以即使寫了三態(tài),器件也無法實(shí)現(xiàn),而引腳IO級(jí)則是有三態(tài)門的,可以實(shí)現(xiàn)這些功能。理解了三態(tài)門后,實(shí)現(xiàn)雙向端口就很容易了,所謂雙向,又能輸出,又能輸入,但對(duì)應(yīng)的都是一個(gè)端口,從時(shí)間上看,其實(shí)就是所謂的時(shí)分復(fù)用,控制端口中三態(tài)門的狀態(tài),在三態(tài)門打開時(shí),可以輸出信號(hào),對(duì)方接收,在三態(tài)門處于高阻態(tài)時(shí),這時(shí)候輸出被禁用,外面的信號(hào)就可以通過輸入緩沖器進(jìn)來,這樣就實(shí)現(xiàn)了雙向端口。(雙向端口電路設(shè)計(jì)-assign語(yǔ)句)實(shí)現(xiàn)雙向端口的核心就是控制好三態(tài)門的狀態(tài)。通過例5-27學(xué)習(xí)。該模塊是雙向端口的一個(gè)完整描述,可以作為設(shè)計(jì)中的一個(gè)子模塊直接調(diào)用。解釋代碼及功能(略),只有在ctrl為0時(shí)輸入數(shù)據(jù)才是有效的,ena為1時(shí)輸入,反之輸入。(雙向端口電路設(shè)計(jì)-always語(yǔ)句)用always塊也可以實(shí)現(xiàn),例5-29就是如此,靠Ctrl來控制端口方向,為零時(shí)Q置為高阻,也就是輸入模式,反之為輸出模式。(雙向端口電路設(shè)計(jì)錯(cuò)誤實(shí)例)教材上例5-30給出了一個(gè)錯(cuò)誤的例子,還有例5-31/5-32,這些課堂上都不細(xì)講了,本質(zhì)上,大家只要控制好三態(tài)門的狀態(tài),不要出現(xiàn)分支遺漏情況,也盡量不要使用多重賦值(像教材上的例5-31/5-32雖然可以實(shí)現(xiàn)正常功能,但從代碼風(fēng)格的角度看,并不是一個(gè)好的設(shè)計(jì),實(shí)際上,用一個(gè)多分支if/else或者Case語(yǔ)句就可以了,大家可以自行寫一下)。8.7 Verilog設(shè)計(jì)準(zhǔn)則1:Verilog的語(yǔ)法很多,可綜合語(yǔ)法只占Verilog語(yǔ)法的很小一部分,但正是這一部分才是Verilog語(yǔ)法的精髓,要強(qiáng)調(diào)的是,Verilog不是軟件代碼,描述的是硬件電路結(jié)構(gòu)及其行為。在設(shè)計(jì)代碼之前,最好先自己畫一個(gè)結(jié)構(gòu)圖出來,設(shè)計(jì)包含哪些模塊,模塊有哪些端口,各個(gè)模塊完成什么功能,必要時(shí)還要畫時(shí)序圖,然后確定沒有問題了再開始寫代碼,尤其是在大型項(xiàng)目中,一上來就寫代碼是最不可取的,一方面思路不可能考慮得面面俱到,寫著改著,最后改得面目全非。而且,Verilog語(yǔ)言不像軟件語(yǔ)言那么精妙,像C語(yǔ)言,指針、多維數(shù)組、遞歸,很多高級(jí)算法在里面,往往程序?qū)懙煤芫?,?zhí)行效率比較高,但Verilog恰恰相反,我們可以看到,基本上在可綜合語(yǔ)句中,就是assign語(yǔ)句和always語(yǔ)句,所有的功能都是在這些語(yǔ)句中完成,所以,Verilog不追求面子工程,只考慮綜合效果好不好。2:對(duì)現(xiàn)代電子設(shè)計(jì)是尤其重要的,一定要有同步設(shè)計(jì)的理念在里面,同步設(shè)計(jì)要求設(shè)計(jì)中的所有元器件都依賴于單一的或者有明確相位關(guān)系的時(shí)鐘,所有寄存器的翻轉(zhuǎn)是依賴于固定時(shí)鐘沿的,就是說它有一個(gè)穩(wěn)定的工作節(jié)拍,最忌諱異步信號(hào),但實(shí)際上異步信號(hào)卻不可避免,怎么辦?同步化,像復(fù)位信號(hào),如果復(fù)位信號(hào)釋放和時(shí)鐘沿離得很近,那就會(huì)導(dǎo)致亞穩(wěn)態(tài)的嚴(yán)重問題,因此,我們?cè)谕獠慨惒綇?fù)位進(jìn)來后都要先用寄存器打2拍,就樣就做到了異步復(fù)位,同步釋放。同樣地,如果有些信號(hào)是異步輸入,也要先打2拍再使用。具體為什么打2拍就可以,現(xiàn)在我們先不介紹,大家先知道應(yīng)該怎么用,后面高級(jí)教程中我們會(huì)詳細(xì)解釋。3:關(guān)于輸出信號(hào),在數(shù)字電路早期,寄存器是比較寶貴的資源,因此輸出變量能用邏輯型就不用寄存型,但邏輯型有很大的問題,競(jìng)爭(zhēng)、冒險(xiǎn)不可避免,經(jīng)常會(huì)產(chǎn)生輸出毛刺,這些毛刺一般都出現(xiàn)在其相關(guān)輸入邏輯變量多位同時(shí)翻轉(zhuǎn)時(shí),這是組合邏輯電路的先天特點(diǎn),但事實(shí)上,如果采用寄存器型輸出,只在每個(gè)時(shí)鐘沿采樣一次,就是說寄存器型輸出,只要保證時(shí)鐘沿附近沒有毛刺就行(一般毛刺是在時(shí)鐘沿之后)就可以有效地避免毛刺現(xiàn)象,也正因?yàn)榧拇嫫骺梢杂行V除毛刺,現(xiàn)在FPGA中寄存器資源一般都是極其豐富的,所以大家不要怕浪費(fèi),省個(gè)寄存器,出來一堆毛刺,后果更嚴(yán)重,這也是現(xiàn)代高速設(shè)計(jì)的一個(gè)基本準(zhǔn)則。從這個(gè)角度看,現(xiàn)在FPGA中已經(jīng)很少有純粹的組合邏輯電路了,寄存器占的比例越來越大。第9章 Verilog系統(tǒng)設(shè)計(jì)優(yōu)化教學(xué)目的:理解常用的系統(tǒng)優(yōu)化手段教學(xué)基本要求:了解資源共享、邏輯優(yōu)化、串行化等資源優(yōu)化手段的原理及應(yīng)用,掌握流水線技術(shù)的工作原理。教學(xué)內(nèi)容:資源優(yōu)化、速度優(yōu)化。教學(xué)提示:由于并發(fā)執(zhí)行語(yǔ)句的存在,HDL語(yǔ)言在可讀性上明顯遜色于各類軟件高級(jí)編程語(yǔ)言,而且代碼量普遍很大,即使是一些中小規(guī)模HDL設(shè)計(jì),其代碼也通常都在數(shù)千行甚至上萬行,再加上后期的功能升級(jí)等要求,均對(duì)HDL代碼的可讀性、可維護(hù)性提出了更高要求。因此學(xué)生必須注意提高自己的代碼閱讀能力。學(xué)法指導(dǎo):針對(duì)同一設(shè)計(jì)要求,自行編寫不同實(shí)現(xiàn)方式對(duì)應(yīng)的Verilog代碼,并比較優(yōu)劣,給出自己的結(jié)論。作業(yè):為什么流水線技術(shù)能有效提高工作速度?其缺陷是什么?小結(jié):這一章內(nèi)容重點(diǎn)針對(duì)資源優(yōu)化與速率優(yōu)化2大方面展開,尤其是流水線設(shè)計(jì),是該章的重點(diǎn),學(xué)生可以通過生活實(shí)例感知到流水線的優(yōu)點(diǎn),并推廣至EDA領(lǐng)域。詳細(xì)大綱9.1 資源優(yōu)化主要介紹三種常用的資源優(yōu)化手段,重點(diǎn)使學(xué)生理解其工作原理。9.1.1資源共享注意不要盲目使用資源共享的策略優(yōu)化。重點(diǎn)是區(qū)分常系數(shù)乘法器與變系數(shù)乘法器9.2速度優(yōu)化從福特公司生產(chǎn)的T型車引入工業(yè)流水線的概念,然后將其擴(kuò)展至FPGA設(shè)計(jì)中,并通過加法器設(shè)計(jì)實(shí)例實(shí)現(xiàn)流水線加法器。插入一級(jí)流水線可使最高工作頻率提高一倍左右。第10章 Verilog狀態(tài)機(jī)設(shè)計(jì)技術(shù)教學(xué)目的:理解狀態(tài)機(jī)的理念、優(yōu)勢(shì),學(xué)會(huì)用Verilog設(shè)計(jì)同步狀態(tài)機(jī)教學(xué)基本要求:通過狀態(tài)機(jī)設(shè)計(jì)實(shí)例講解使學(xué)生掌握簡(jiǎn)單的狀態(tài)機(jī)設(shè)計(jì)流程,并進(jìn)一步提高代碼風(fēng)格的規(guī)范性。教學(xué)內(nèi)容:Verilog狀態(tài)機(jī)的一般形式、Moore和Mealy型狀態(tài)機(jī)設(shè)計(jì)、狀態(tài)機(jī)編碼方式、安全狀態(tài)機(jī)。教學(xué)提示:狀態(tài)機(jī)設(shè)計(jì)是反映工程師FPGA應(yīng)用能力的最直接手段,學(xué)生如果想真正掌握EDA技術(shù),必須具備有限狀態(tài)機(jī)設(shè)計(jì)能力。學(xué)法指導(dǎo):首先給出狀態(tài)機(jī)設(shè)計(jì)范式,從代碼風(fēng)格上引導(dǎo)學(xué)生學(xué)會(huì)3段式狀態(tài)機(jī)書寫及設(shè)計(jì)。作業(yè):針對(duì)紅綠燈設(shè)計(jì)實(shí)例進(jìn)行改寫,增加LED倒計(jì)時(shí)功能。小結(jié):狀態(tài)機(jī)設(shè)計(jì)是現(xiàn)代數(shù)字電路設(shè)計(jì)中最重要的設(shè)計(jì)手段,此前的簡(jiǎn)單時(shí)序電路均可以視作是狀態(tài)機(jī)的簡(jiǎn)化,狀態(tài)機(jī)的功能十分強(qiáng)大,不亞于傳統(tǒng)的CPU。但狀態(tài)機(jī)的核心是同步時(shí)序電路,只有從電路的角度去考慮,才能理解狀態(tài)機(jī)的設(shè)計(jì)關(guān)鍵。本章是我們整個(gè)教材的重點(diǎn),也是難點(diǎn),一旦掌握了狀態(tài)機(jī)設(shè)計(jì)技術(shù),使用Verilog完成各種系統(tǒng)設(shè)計(jì)都會(huì)游刃有余。該章節(jié)教材上小節(jié)很多,但實(shí)際上只有10.1小節(jié)是重點(diǎn),后續(xù)小節(jié)知識(shí)點(diǎn)以學(xué)生自學(xué)為主,不再課堂統(tǒng)一講解,這樣不僅提高教學(xué)效率,而且有助于培養(yǎng)學(xué)生自己解決問題的能力。詳細(xì)大綱引言狀態(tài)機(jī)設(shè)計(jì)是現(xiàn)代數(shù)字電路設(shè)計(jì)中最重要的設(shè)計(jì)手段,此前的簡(jiǎn)單時(shí)序電路均可以視作是狀態(tài)機(jī)的簡(jiǎn)化,狀態(tài)機(jī)的功能十分強(qiáng)大,不亞于傳統(tǒng)的CPU。但狀態(tài)機(jī)的核心是同步時(shí)序電路,只有從電路的角度去考慮,才能理解狀態(tài)機(jī)的設(shè)計(jì)關(guān)鍵。本章是我們整個(gè)教材的重點(diǎn),也是難點(diǎn),一旦掌握了狀態(tài)機(jī)設(shè)計(jì)技術(shù),使用Verilog完成各種系統(tǒng)設(shè)計(jì)都會(huì)游刃有余,且以后的EDA實(shí)驗(yàn)也會(huì)以狀態(tài)機(jī)設(shè)計(jì)為主,要求學(xué)生重視該章節(jié)學(xué)習(xí)。10.1 狀態(tài)機(jī)的一般形式理論上,只要有時(shí)序電路,就有狀態(tài)機(jī)(舉例說明D觸發(fā)器、4位計(jì)數(shù)器都是簡(jiǎn)化狀態(tài)機(jī)),但這種并非有意寫出的狀態(tài)機(jī),在Verilog中,對(duì)狀態(tài)機(jī)的描述是有相對(duì)比較固定的模式的,只要掌握了這些模式,就可以很輕松地設(shè)計(jì)出各種狀態(tài)機(jī)。10.1.1狀態(tài)機(jī)的特點(diǎn)與優(yōu)勢(shì):狀態(tài)機(jī)與CPU,這是數(shù)字電路領(lǐng)域中最強(qiáng)大的兩種武器,當(dāng)然后者可能名氣更大(介紹典型的CPU),但從功能上,狀態(tài)機(jī)并不遜色于它,甚至許多場(chǎng)合下還要優(yōu)于CPU。介紹狀態(tài)機(jī)主要特點(diǎn):1、借用CPU的順序控制模型,克服硬件系統(tǒng)順序方式控制不靈活的缺點(diǎn);2、EDA工具支持良好,可有效優(yōu)化狀態(tài)機(jī)設(shè)計(jì),降低人工設(shè)計(jì)難度(像一些冗余狀態(tài)消除、編碼選擇,EDA都可以自動(dòng)完成);3、采用同步時(shí)序的狀態(tài)機(jī)可有效避免競(jìng)爭(zhēng)冒險(xiǎn)現(xiàn)象,工作穩(wěn)定可靠;4、性能高效,可靈活設(shè)計(jì)多個(gè)狀態(tài)機(jī)、嵌套狀態(tài)機(jī),多個(gè)狀態(tài)機(jī)并行工作,處理性能遠(yuǎn)超CPU(近年來火爆的多核CPU也是吸取了狀態(tài)機(jī)的特色),正因?yàn)闋顟B(tài)機(jī)的并行工作特性,雖然其工作頻率一般較低(FPGA系統(tǒng)一般在100M~200M就已經(jīng)算高速系統(tǒng)),但吞吐量仍可大大超過工作頻率數(shù)GHz的CPU。10.1.2狀態(tài)機(jī)的一般結(jié)構(gòu)主控時(shí)序過程、主控組合過程、以及輔助過程。第13章 Verilog語(yǔ)法補(bǔ)充說明教學(xué)目的:在已有的學(xué)習(xí)基礎(chǔ)上,進(jìn)一步查缺補(bǔ)漏,建立完整的Verilog語(yǔ)法體系。教學(xué)基本要求:掌握initial塊語(yǔ)句用法,了解條件編譯指令。教學(xué)內(nèi)容:Verilog文字規(guī)則、變量數(shù)據(jù)類型、常用語(yǔ)句補(bǔ)充、用庫(kù)元件實(shí)現(xiàn)結(jié)構(gòu)描述。教學(xué)提示:仍然借用C語(yǔ)言知識(shí)與Verilog展開多方面對(duì)比,找出異同點(diǎn)。學(xué)法指導(dǎo):通過典型設(shè)計(jì)代碼講解消化新的語(yǔ)法知識(shí)點(diǎn)。作業(yè):思考為什么庫(kù)文件設(shè)計(jì)手段未能得到廣泛應(yīng)用。小結(jié):這一章知識(shí)點(diǎn)相對(duì)瑣碎,但重點(diǎn)并不多,大部分屬于了解范疇,只有initial過程塊應(yīng)用相對(duì)廣泛,要求學(xué)生掌握。詳細(xì)大綱13.1Verilog文字規(guī)則常數(shù)的3種類型1.整數(shù),可綜合2.實(shí)數(shù),不可綜合3.字符串,不可綜合合法的Verilog標(biāo)識(shí)符,區(qū)分大小寫13.2數(shù)據(jù)類型net網(wǎng)線類型、register寄存器類型、存儲(chǔ)器類型13.3操作符位操作符與邏輯操作符(&|~&&||!)按操作數(shù)個(gè)數(shù)對(duì)操作符的分類:?jiǎn)文?、雙目、三目縮位運(yùn)算符的操作規(guī)則注意區(qū)分reg[N-1:0]array1和regarray1[N-1:0]13.4常用語(yǔ)句補(bǔ)充Initial語(yǔ)句特點(diǎn)及其作用Forever語(yǔ)句特點(diǎn)及其作用條件編譯語(yǔ)句文件包含語(yǔ)句任務(wù)和函數(shù)13.5用庫(kù)元件實(shí)現(xiàn)結(jié)構(gòu)描述Verilog共定義了26個(gè)基本元件第14章 TestBench仿真介紹教學(xué)目的:了解Testbench在整個(gè)設(shè)計(jì)中的地位與作用,掌握典型Testbench語(yǔ)句的書寫。教學(xué)基本要求:學(xué)習(xí)完本章知識(shí)后,學(xué)生應(yīng)該具備簡(jiǎn)單的Testbench設(shè)計(jì)和波形仿真能力。教學(xué)內(nèi)容:TestBench的目標(biāo)、TestBench的基本框架、產(chǎn)生激勵(lì)的主要方法、基于ModelSim的設(shè)計(jì)仿真。教學(xué)提示:TestBench與傳統(tǒng)軟件測(cè)試的區(qū)別。學(xué)法指導(dǎo):典型設(shè)計(jì)的TestBench代碼比設(shè)計(jì)本身更為復(fù)雜,要求學(xué)生認(rèn)識(shí)到Testbench的重要性,學(xué)會(huì)利用initial、always、repeat等語(yǔ)句產(chǎn)生合適的激勵(lì)信號(hào)。作業(yè):完成具有8位隨機(jī)數(shù)產(chǎn)生的數(shù)據(jù)激勵(lì)模塊編寫,工作時(shí)鐘為50MHz。小結(jié):Testbench在實(shí)際應(yīng)用中地位極為重要,但受限于教學(xué)篇幅以及本科生的學(xué)習(xí)層次,這里只能是盡量簡(jiǎn)化,但要讓學(xué)生建立起Testbench的完整概念,并學(xué)會(huì)ModelSim下的波形仿真。該章教材PPT并未采用教材的小節(jié)分配,而是從實(shí)際工程需求出發(fā),逐步引入TestBench的概念及其組成要求,一些教材上介紹的知識(shí)點(diǎn)并不符合工程化理念,故要求學(xué)生在學(xué)習(xí)該章節(jié)時(shí)以PPT課件為主。詳細(xì)大綱Verilog仿真流程功能仿真針對(duì)RTL級(jí)可綜合代碼開展,主要驗(yàn)證代碼功能是否正確不包含電路延時(shí)信息TestBench的目標(biāo)TestBench的基本框架基于TestBench的HDL代碼調(diào)試產(chǎn)生激勵(lì)的主要方法由硬件模型產(chǎn)生待驗(yàn)證模塊所需的輸入激勵(lì)碼(代價(jià)高);用HDL代碼直接生成激勵(lì)(最常用,適合中小系統(tǒng));事先產(chǎn)生所需的輸入激勵(lì)碼并存于相應(yīng)的文件中,使用時(shí)從文件中讀?。ㄟm合復(fù)雜系統(tǒng))用HDL代碼生成DUT的輸入激勵(lì)第6、7章 EDA工具應(yīng)用深入及LPM宏模塊的應(yīng)用教學(xué)目的:進(jìn)一步提高學(xué)生的QuartusII應(yīng)用水平,學(xué)會(huì)常用的IP核定制及生成。教學(xué)基本要求:了解SignalTap的用途及工作原理、學(xué)會(huì)MegaWizard仿真庫(kù)編譯及常用IP核的使用。教學(xué)內(nèi)容:SignalTapII原理及應(yīng)用、嵌入式邏輯分析儀使用方法、MegaWizardIPCore核的使用、ModelSim下MegaCore的仿真。教學(xué)提示:提醒學(xué)生注意SignalTapII與傳統(tǒng)的邏輯分析儀的特點(diǎn)。學(xué)法指導(dǎo):通過演示操作使學(xué)生了解SignalTapII的用法。作業(yè):自行編譯QuestaSim下QuartusII仿真庫(kù)文件。小結(jié):這一章主要是以實(shí)踐操作為主,沒有Verilog語(yǔ)法知識(shí),因此要求學(xué)生多練習(xí),課堂講解也以演示操作為主,啟動(dòng)互動(dòng)為輔助。詳細(xì)大綱1SignalTapII原理及應(yīng)用傳統(tǒng)意義上,可邏輯邏輯器件的硬件電路級(jí)調(diào)試手段是邏輯分析儀,但它只能從器件引腳處觀測(cè)信號(hào)的變化情況,隨著邏輯設(shè)計(jì)復(fù)雜性的不斷增加,可編程邏輯器件的調(diào)試難度急劇上升,而且現(xiàn)在主流FPGA基本均采用了BGA封裝,除非專門在PCB板上留有專用觀測(cè)焊點(diǎn),否則無法使用邏輯分析儀抓捕信號(hào)。另一方面,專業(yè)的邏輯分析儀價(jià)格昂貴,從數(shù)十萬到數(shù)百萬RMB不等,這也限制了邏輯分析儀的大規(guī)模應(yīng)用。在線邏輯分析儀原理利用FPGA某一內(nèi)部時(shí)鐘作為觸發(fā)時(shí)鐘,并使用片內(nèi)RAM作為信號(hào)緩存,在符合觸發(fā)條件時(shí),通過JTAG端口將捕捉到的信號(hào)數(shù)據(jù)上傳至電腦端進(jìn)行詳細(xì)分析。典型產(chǎn)品Altera:SignalTapIIXilinx:ChipscopeProLattice:Reveal優(yōu)點(diǎn)價(jià)格低廉(隨FPGA開發(fā)工具集成,只需數(shù)千美元);只需使用器件內(nèi)部的存儲(chǔ)器作為信號(hào)緩存,典型記錄長(zhǎng)度可達(dá)65536點(diǎn)以上,滿足絕大多數(shù)系統(tǒng)需要;無需占用器件IO端口,支持觸發(fā)變量數(shù)量多且可靈活修改,一般可達(dá)200條以上。缺點(diǎn)使用在線邏輯分析儀會(huì)占用芯片邏輯及存儲(chǔ)資源,在資源緊張或低檔芯片場(chǎng)合下不適用;觸發(fā)深度無法與專業(yè)邏輯分析儀相比,不適用于超長(zhǎng)時(shí)間記錄;觸發(fā)頻率受設(shè)計(jì)工程及芯片自身限制,一般很難超過200MHz,超高速場(chǎng)合下觀測(cè)能力有限。SignalTap本質(zhì)是使用高速時(shí)鐘采樣記錄待觀測(cè)信號(hào),因此必須保證工作時(shí)鐘頻率高于信號(hào)的變化頻率;應(yīng)合理設(shè)置觸發(fā)信號(hào)數(shù)量及觸發(fā)深度,數(shù)量過多或深度過大都會(huì)耗費(fèi)大量資源,且影響整個(gè)工程的最高工作頻率;在調(diào)試完成后,應(yīng)及時(shí)刪除工程中的SignalTap文件,并重新編譯工程,確保獲得最好的資源/時(shí)序性能。2嵌入式邏輯分析儀使用方法在Quartus中打開待調(diào)試工程,然后點(diǎn)擊File|new,選擇SignalTapIILogicAnalyzerFile打開SignalTap
II編輯窗口,修改Instance實(shí)例化名字雙擊光標(biāo)所在位置,加入待觀測(cè)信號(hào)SignalTapII工作時(shí)鐘設(shè)置SignalTapII捕捉條件設(shè)置(BASIC模式)保存SignalTap子工程信息,返回QuartusII,重新編譯工程編譯下載,既可通過Programmer下載sof文件,也可直接通過SignalTap下載啟動(dòng)SignalTap
II進(jìn)行采樣與分析3MegaWizardIPCore核的使用MegaWizard工具是Altera提供的參數(shù)可設(shè)置IP核生成工具,包括算術(shù)類、通信類、數(shù)字信號(hào)處理類、組合邏輯類、輸入輸出端口類、高速接口類、JTAG調(diào)試類、存儲(chǔ)器及寄存器類等大量免費(fèi)/收費(fèi)IP核。合理使用IP核可大大減輕開發(fā)編程壓力,同時(shí)代碼質(zhì)量及性能也比較有保障。常用IP核:乘法(累加)器:完成硬件乘法器或乘累加器(MAC),數(shù)字信號(hào)處理中應(yīng)用極為頻繁;存儲(chǔ)器(RAM/ROM):最常用的IP組件之一,用于大容量數(shù)據(jù)存儲(chǔ)/緩沖、跨時(shí)鐘域交換等;FIFO:常用于數(shù)據(jù)緩沖、數(shù)據(jù)速率轉(zhuǎn)換、讀寫時(shí)鐘分離的異步FIFO多用于解決跨時(shí)鐘域數(shù)據(jù)同步;時(shí)鐘管理模塊PLL:用于完成時(shí)鐘信號(hào)再生、整形、倍頻、分頻等處理;FIR數(shù)字濾波器:數(shù)字信號(hào)處理中最常用組件,實(shí)現(xiàn)數(shù)字域?yàn)V波。4ModelSim下MegaCore的仿真對(duì)含有MegaCore源文件的設(shè)計(jì)工程,如果要進(jìn)行功能或時(shí)序仿真,均需要事先編譯Altera公司的產(chǎn)品庫(kù),否則仿真軟件無別識(shí)別MegaCore源文件,同樣地,如果使用Xilinx公司的FPGA,也需要編譯XilinxIP庫(kù)。QuestSim與ModelSim編譯步驟完全相同。為確保每次打開ModelSim時(shí)自動(dòng)加載Altera庫(kù),可打開modelsim.ini文件,確認(rèn)是否有相關(guān)語(yǔ)句,確認(rèn)完畢后恢復(fù)該文件的只讀屬性。(七)課程有關(guān)說明本大綱重點(diǎn)加強(qiáng)了Verilog實(shí)用化設(shè)計(jì)以及相關(guān)應(yīng)用的內(nèi)容。本課程的必備先修課程為數(shù)字電子技術(shù)課程。同時(shí)本課程與信號(hào)與系統(tǒng)、通信原理電路等課程也有一定關(guān)系。執(zhí)行本大綱要注意Verilog語(yǔ)法講解與應(yīng)用實(shí)例講解的有機(jī)結(jié)合。Verilog的代碼風(fēng)格是本大綱新引入的內(nèi)容,也是學(xué)習(xí)的重點(diǎn)和難點(diǎn)。目前,國(guó)內(nèi)的主流EDA教材對(duì)HDL代碼風(fēng)格重視程度明顯不夠,多數(shù)教材甚至直接缺失該部分內(nèi)容。這導(dǎo)致許多學(xué)生雖然學(xué)習(xí)了FPGA課程,但在工作后從事FPGA開發(fā)時(shí)代碼書寫混亂,幾乎沒有可維護(hù)性,并不能真正完成具有工程實(shí)用性的FPGA設(shè)計(jì)。而代碼風(fēng)格上的要求恰恰是
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度綠色交通合伙清算合作協(xié)議3篇
- 二零二五年度全款購(gòu)房合同:房地產(chǎn)項(xiàng)目投資并購(gòu)及整合協(xié)議3篇
- 2025年度農(nóng)業(yè)現(xiàn)代化貸款擔(dān)保協(xié)議3篇
- 2025年度全新官方版二零二五年度離婚協(xié)議書與子女監(jiān)護(hù)權(quán)協(xié)議3篇
- 二零二五年度知識(shí)產(chǎn)權(quán)侵權(quán)律師費(fèi)協(xié)議3篇
- 二零二五年度農(nóng)村土地占用與農(nóng)村文化傳承合同協(xié)議
- 2025年度航空航天公司干股分紅與飛行器研發(fā)合作協(xié)議3篇
- 二零二五年度衛(wèi)浴安裝與智能家居系統(tǒng)集成與優(yōu)化服務(wù)協(xié)議3篇
- 二零二五年度太陽(yáng)能電池板加工服務(wù)合同3篇
- 二零二五年度物聯(lián)網(wǎng)解決方案公司轉(zhuǎn)讓合同3篇
- GIS組合電器概述
- 水廠分布式光伏項(xiàng)目(設(shè)備采購(gòu))實(shí)施組織方案及售后服務(wù)方案
- 污水處理廠技術(shù)副廠長(zhǎng)競(jìng)聘報(bào)告
- 2021年機(jī)務(wù)檢修試題庫(kù)
- 一年級(jí)學(xué)生英語(yǔ)學(xué)科評(píng)語(yǔ)
- 來料檢驗(yàn)員工作總結(jié)
- 工商企業(yè)管理專業(yè)教學(xué)資源庫(kù)申報(bào)書-專業(yè)教學(xué)資源庫(kù)備選項(xiàng)目材料
- 急診科副主任個(gè)人工作述職報(bào)告
- 硬件工程師年終總結(jié)報(bào)告
- 音樂盛典策劃方案
- 學(xué)校新媒體管理制度規(guī)章
評(píng)論
0/150
提交評(píng)論