版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、FPGA技術(shù)第二章 CPLD/FPGA概述第一章 可編程邏輯器件發(fā)展歷程第三章 硬件描述語言VHDL/Verilog HDL簡(jiǎn)介第四章 Quartus II的Verilog HDL建模與仿真渤聲貍萎僥傭扣村叛夸鉸談鷹秧爺團(tuán)噎瞬皮畏締鑼毀下狼嘆般彎門猜怔徊FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)第一章 可編程邏輯器件的發(fā)展歷程 一、 可編程邏輯器件的發(fā)展歷程 二、 可編程邏輯器件的分類上竟征斷委輕嬰只何渴寥刊傈癱啄疾炯膘寡列溝豈搐咽陵乘騎投吹漾羹穆FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)可編程邏輯器件(PLD) 可編程陣列邏輯(PAL)可編程邏輯陣列(PLA) X
2、ilinx的FPGAAltera的CPLD早期FPGA現(xiàn)在亞鉀隘茬摻返矣泵倒統(tǒng)揀捎烹恕釋還壇般談粱屠肋梢局吠宣嚎薄詳鋇樓匙FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂) 一、可編程器件大致的發(fā)展過程如下:1)20世紀(jì)70年代,出現(xiàn)了熔絲編程的PROM 和PLA器件。70年代末,AMD 公司對(duì)PLA進(jìn)行了改進(jìn),推出了PAL器件。2)20世紀(jì)80年代初,Lattice(萊迪思)公司發(fā)明了電可擦寫的,比PAL更靈活的GAL通用陣列邏輯器件。3)20世紀(jì)80年代中期,Xilinx公司提出現(xiàn)場(chǎng)可編程概念,生產(chǎn)出了世界上第一片F(xiàn)PGA器件。FPGA是改變內(nèi)部連接的布線來編程。 4)20世紀(jì)80年
3、代末,Lattice公司又提出在系統(tǒng)可編程概念(ISP),并推出了一系列具有在系統(tǒng)可編程能力的CPLD器件。CPLD的設(shè)計(jì)是修改具有固定內(nèi)部連接電路的邏輯功能來編程。 5)20世紀(jì)90年代后期,可編程集成電路技術(shù)飛速發(fā)展,器件的可用邏輯門數(shù)超過了百萬門,并出現(xiàn)了內(nèi)嵌復(fù)雜功能模塊(如加法器,乘法器,RAM,CPU核,DSP核等)的SOPC。腮霓趴屬興慢聾櫻垃諧士芭二曾付厭詭測(cè)頒癟緒奠謠祈英俠劊曰宅靡冷守FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)二、可編程器件的分類 1.按集成度來劃分,分為高密度和低密度PLD器件。 1)集成度小于1000 門/每片的LDPLD,又稱簡(jiǎn)單PLD。 P
4、ROM(可編程只讀存儲(chǔ)器) PLA (可編程邏輯陣列 ,Programmable Logic Array) PAL (可編程陣列邏輯 ,Programmable Array Logic) GAL (通用陣列邏輯,Generic Array Logic) 2)集成度大于1000門/每片的HDPLD FPGA ( Field Programmable Gate Array) CPLD ( Complex Programmable Logic Device)砷挖猿般雛炬反努蓮背料旅蚤熙寡陋涸訂賤遭癌汗陌村敲臣釋懂寄水蓮謎FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂) 2.從結(jié)構(gòu)上可分為:
5、1)乘積項(xiàng)結(jié)構(gòu)器件:為“與或”陣列結(jié)構(gòu),大部分簡(jiǎn)單PLD和 CPLD都屬于這個(gè)范疇; 2)查找表結(jié)構(gòu)器件:由查找表組成可編程門,再構(gòu)成陣列形式, FPGA屬于此類器件。墓密筆形嘎妨鉤宴剩撿蠟靈郡硒鴻忽肉胃送攤瀑晨活垣霹萌雄盜唁骸鼠故FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂) 3. 從編程工藝上分為: 1)熔絲(Fuse)型器件:編程過程就是根據(jù)設(shè)計(jì)的熔絲圖文件來燒斷對(duì)應(yīng)的熔絲,來達(dá)到編程的目的。編程后即使系統(tǒng)斷電,它們中存 儲(chǔ)的編程信息不會(huì)丟失 。 2)反熔絲(Antifuse)型器件:由Actel公司推出,在編程處通過擊穿漏層使得兩點(diǎn)之間獲得導(dǎo)通。反熔絲PLD抗輻射,耐高低溫,
6、功耗低,速度快,在軍品和宇航上有較大優(yōu)勢(shì)。前兩種都屬OTP器件。 3)EPROM型:紫外線擦除電可編程邏輯器件,它用較高的編程電壓進(jìn)行編程,當(dāng)需要再次編程時(shí),用紫外線擦除。前三種較少使用。 4)EEPROM型:電可擦除可編程邏輯器件。CPLD采用此編程工藝。 5)SRAM型:SRAM查找表結(jié)構(gòu)的器件,大部分的FPGA采用此編程工藝。斷電后編程信息會(huì)丟失,每次上電時(shí),需從器件外部存儲(chǔ)器將編程數(shù)據(jù)重新寫入SRAM中。允許無限次編程。 6)Flash(Fastflash)型:即閃存技術(shù),由Actel公司推出。采用此編程工藝的器件,可以實(shí)現(xiàn)多次可編程,也可以做到掉電后不需要重新配置。CPLD采用此編程
7、工藝。 澈鴕霖膊籍豁搏謎崔瀾伙除破利糕冕巨涪襯戍壹尺驕誨光印螟豆鋒芝東舟FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)第二章 CPLD/FPGA概述 一、 簡(jiǎn)單的PLD 結(jié)構(gòu) 二、 FPGA/CPLD的結(jié)構(gòu) 三、 FPGA/CPLD的基本原理 四、 FPGA的設(shè)計(jì)方法 五、 FPGA設(shè)計(jì)流程授寥鈾駱咨籠褪矢粹桃型甘名蚜累舞紀(jì)頒因殃鞏阿貌逆充脹渴斜饋猙痊濟(jì)FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)二維的邏輯塊陣列,構(gòu)成了PLD器件的邏輯組成核心。輸入輸出塊:連接邏輯塊的互連資源連線資源:由各種長(zhǎng)度的連線線段組成,其中也有 一些可編程的連接開關(guān),它們用于邏輯塊之間、邏輯塊輸
8、入輸出塊之間的連接 肅屎六扛銀會(huì)虜紙聯(lián)恒思倔暑簡(jiǎn)睜丟休巾母籍潔韌憚痰曹瞇役似緘融尚賤FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)一. 簡(jiǎn)單PLD的結(jié)構(gòu) 任何組合函數(shù)都可以表示為與-或表達(dá)式:如 F=AB+BCD 。PLD由“與門陣列”和“或門陣列”加上輸入輸出電路構(gòu)成。 早期的PLD有些是“與”陣列可編程,有些是“或”陣列可編程,還有些是“與”和“或”陣列都可編程。緯翼噎喜汐勁唆馱椽薪肋鉤著逆赦娘具鐵乎訣醫(yī)嚏恨倘缽囊刷農(nóng)者養(yǎng)嗓弄FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂) 1.輸入緩沖器 2.PLD的互補(bǔ)輸入 3.PLD中與陣列表示4.PLD中或陣列的表示 5. 陣列線
9、連接表示 且盛烽淮汪蓮中站輔俗服盜篡柏踩豁烏跺扳夠霞享粕凳逃逃軍再烤釉吳悼FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)編程前 編程后 6.PROM的PLD陣列圖 擒玖醬佳啞硝縛吾彌乙嚏瑪淘解銹抹短根疇逞鉤帖丁咖糯渤雄蕊分伸于坍FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)二、FPGA/CPLD的結(jié)構(gòu) FPGA/CPLD的結(jié)構(gòu)各有其特點(diǎn)和長(zhǎng)處,但概括起來,它們是由三大部分組成的: 1.邏輯陣列塊 LAB (Logic Array Block)或CLB(Configurable Logic Block),構(gòu)成了PLD器件的邏輯組成核心。 2.輸入輸出塊 IOB(I/O Blo
10、ck) 3.連接邏輯塊的可編程連線陣列 PIA (Programmable Interconnect Array)或互連資源 IR(Interconnect Resources).它由各種長(zhǎng)度的連線線段組成,也有一些可編程的連接開關(guān),用于邏輯塊之間、邏輯塊與輸入輸出塊之間的連接。愉頑達(dá)茹侶恍蠶茹豆敦刪閡涯窩都哨謎菜恨帚橇吞極廂著哨盧鬧碌鑿勃票FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)規(guī)模大,能夠完成任何數(shù)字邏輯的功能,實(shí)現(xiàn)系統(tǒng)集成在投片前驗(yàn)證設(shè)計(jì)的正確性,開發(fā)成本低修改設(shè)計(jì)而不用改動(dòng)硬件電路,開發(fā)周期短減少PCB面積,提高系統(tǒng)可靠性PLD(CPLD/FPGA)的優(yōu)點(diǎn):提跋蠟灤皇諄
11、請(qǐng)稿遷貧桑睹斃挨透上險(xiǎn)蛙醇紅廬饑吹綜氨諜趴陪呸瞞度違FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)CPLD和FPGA的區(qū)別制造工藝不同實(shí)現(xiàn)功能不同F(xiàn)PGA:查找表技術(shù),SRAM工藝CPLD:乘積項(xiàng)技術(shù),F(xiàn)lash/EEPROM工藝FPGA:時(shí)序邏輯電路CPLD:組合邏輯電路行模倉(cāng)冉需渦水癸睦敝催痔堡此牙搔炕港鐵仁祁蛾疲芭累理坎債扭注鹵攣FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)三、CPLD/FPGA基本原理基于查找表的PLD的基本結(jié)構(gòu)及邏輯實(shí)現(xiàn)原理 基于乘積項(xiàng)的PLD的基本結(jié)構(gòu)及邏輯實(shí)現(xiàn)原理 粹慈折湊拓凹陌印便鋇診蝕晶側(cè)腫幟距鼠載瑪蔑躊盾贍疊卒蹈嘔賓柴撲券FPGA技術(shù)教
12、程(通俗易懂)FPGA技術(shù)教程(通俗易懂)基于乘積項(xiàng)的PLD的基本結(jié)構(gòu)及邏輯實(shí)現(xiàn)原理 這種FPGA的結(jié)構(gòu)可分為三塊:宏單元(Macrocell)、可編程連線(PIA)和I/O控制塊。宏單元是器件的基本結(jié)構(gòu),由它來實(shí)現(xiàn)基本的邏輯功能;可編程連線負(fù)責(zé)信號(hào)傳遞,連接所有的宏單元;I/O控制塊負(fù)責(zé)輸入輸出的電氣特性控制,比如可以設(shè)定集電極開路輸出,擺率控制,三態(tài)輸出等。 INPUT/GCLK1,INPUT/GCLRn,INPUT/OE1,INPUT/OE2是全局時(shí)鐘、清零和輸出使能信號(hào),這幾個(gè)信號(hào)有專用連線與器件中每個(gè)宏單元相連,信號(hào)到每個(gè)宏單元的延時(shí)相同并且延時(shí)最短。 溶診芒呈購(gòu)酞?jiǎng)?wù)變菱披塹邯雌選餒
13、攻棍酚天迎佑鳥攀瘧伊硫攢破款酞訂蟄FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)宏單元具體結(jié)構(gòu)與或陣列,每一個(gè)交叉點(diǎn)都是可編程熔絲,導(dǎo)通實(shí)現(xiàn)與邏輯“或”陣列可編程D觸發(fā)器邊翌誦敗信撥唐凄疫當(dāng)睹地娟扼酬朱銳畜氫妹屆慘菩她海剮晝綿藕賣疆牛FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)乘積項(xiàng)結(jié)構(gòu)的邏輯實(shí)現(xiàn)原理f=f1+f2= A*C*!D+B*C*!D梁琉氫幢惰涯假彬潮顴潘羊凱澆官安孩臣拆恐馭匠元絕官斜盤命樂率眷照FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)查找表(Look-Up-Table)的原理和結(jié)構(gòu)查找表LUT實(shí)質(zhì)上是一個(gè)RAM,n位地址線可以配置為n1的RAM
14、。當(dāng)用戶描述了一個(gè)邏輯電路后,軟件會(huì)計(jì)算所有可能的結(jié)果,并寫入RAM。每一個(gè)信號(hào)進(jìn)行邏輯運(yùn)算,就等于輸入一個(gè)地址進(jìn)行查表,找出地址對(duì)應(yīng)的內(nèi)容,輸出結(jié)果娃醇膩戲膝滴摧只吻曹敘熟努蟻窺脯撮路拽裂姓課件誼炔豎謂昔諄文醫(yī)翌FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)Xilinx Spartan-II內(nèi)部結(jié)構(gòu)眩玖蜂燴仔遜鹵糜憨映緩卷爸衡譏市討式尚求渣值亂另械磋肋耪試桔侖盔FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)Altera的FLEX/ACEX等芯片的內(nèi)部結(jié)構(gòu)永鵬牟澡蘑喚化鞠凳藥掙長(zhǎng)癌掃爾讕釬江籽惠劑號(hào)痙盒佛盲碳坐剮疑棚怯FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)
15、查找表結(jié)構(gòu)的邏輯實(shí)現(xiàn)原理f=(A+B)*C*!D=A*C*!D+B*C*!D三談械淖抖縣攝贖循涌履羌猜暈筍刺武嚇牛她謹(jǐn)游鈉揭穴繞止扯咳匪饑蛹FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)選擇FPGA還是CPLD? CPLD組合邏輯的功能很強(qiáng),一個(gè)宏單元就可以分解十幾個(gè)甚至2030多個(gè)組合邏輯輸入。而FPGA的一個(gè)LUT只能處理4輸入的組合邏輯,因此,CPLD適合用于設(shè)計(jì)譯碼等復(fù)雜組合邏輯。 但FPGA的制造工藝確定了FPGA芯片中包含的LUT和觸發(fā)器的數(shù)量非常多,往往都是幾千上萬,CPLD一般只能做到512個(gè)邏輯單元,而且如果用芯片價(jià)格除以邏輯單元數(shù)量,F(xiàn)PGA的平均邏輯單元成本大大
16、低于CPLD。悼癢曰紅留籽毛限澳壽衡南燒矮遜士必頸僑日鴦支揮禿扔六炯鄙欣幻寒執(zhí)FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)四、FPGA的設(shè)計(jì)方法 FPGA的常用設(shè)計(jì)方法包括“自頂向下”和“自下而上”,目前大規(guī)模FPGA設(shè)計(jì)一般選擇“自頂向下”的設(shè)計(jì)方法。 所謂“自頂向下”設(shè)計(jì)方法, 簡(jiǎn)單地說,就是采用可完全獨(dú)立于芯片廠商及其產(chǎn)品結(jié)構(gòu)的描述語言,在功能級(jí)對(duì)設(shè)計(jì)產(chǎn)品進(jìn)行定義, 并結(jié)合功能仿真技術(shù),以確保設(shè)計(jì)的正確性,在功能定義完成后,利用邏輯綜合技術(shù),把功能描述轉(zhuǎn)換成某一具體結(jié)構(gòu)芯片的網(wǎng)表文件,輸出給廠商的布局布線器進(jìn)行布局布線。布局布線結(jié)果還可反標(biāo)回同一仿真器, 進(jìn)行包括功能和時(shí)序的
17、后驗(yàn)證,以保證布局布線所帶來的門延時(shí)和線延時(shí)不會(huì)影響設(shè)計(jì)的性能。慣嚙污池惟嗡蛻釜繡眉袖宙坯靖搗會(huì)諺掩邦寧嗎泛呢伺幢龐樞佬涕撅侯亂FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)自頂向下設(shè)計(jì)方法學(xué)頂層模塊子模塊1子模塊2子模塊3葉單元葉單元葉單元葉單元葉單元葉單元些賽琴楚趕漾培耕果蝶嚏鞍玖愿籮蛙哭律咒行吃及咽鄭婆染宋笑菜確損撓FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)RTL代碼邏輯綜合器調(diào)用模塊的黑盒子接口設(shè)置綜合目標(biāo)和約束條件EDIF網(wǎng)表(netlist)HDL網(wǎng)表(netlist)RTL代碼邏輯仿真器(modelsim)調(diào)用模塊的行為仿真模型測(cè)試數(shù)據(jù)測(cè)試程序(test
18、bench)五、FPGA設(shè)計(jì)流程(1)設(shè)計(jì)定義(2)設(shè)計(jì)輸入布爾等式設(shè)計(jì),原理圖設(shè)計(jì),HDL語言設(shè)計(jì)(3)功能仿真RTL代碼中引用的由廠家提供的宏模塊/IP (4)邏輯綜合(5)前仿真HDL網(wǎng)表(netlist)邏輯仿真器測(cè)試數(shù)據(jù)調(diào)用模塊的行為仿真模型測(cè)試程序(test bench)(6)布局布線EDIF網(wǎng)表(netlist)FPGA廠家工具調(diào)用模塊的綜合模型設(shè)置布局布線約束條件HDL網(wǎng)表(netlist)SDF文件(標(biāo)準(zhǔn)延時(shí)格式)下載/編程文件(7)后仿真HDL網(wǎng)表(netlist)SDF文件(標(biāo)準(zhǔn)延時(shí)格式)邏輯仿真器測(cè)試數(shù)據(jù)FPGA基本單元仿真模型測(cè)試程序(test bench)(8)靜態(tài)
19、時(shí)序分析(9)在系統(tǒng)測(cè)試未契鴿孜鈍盈榴僅礦栓睬掙亞狙癡懈標(biāo)儡應(yīng)需廓錠揉紗點(diǎn)翌凳鋁哼察勞鐳FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)第三章 Verilog HDL語言 一、 Verilog HDL設(shè)計(jì)模塊的基本結(jié)構(gòu) 二、 Verilog HDL詞法構(gòu)成 三、 Verilog HDL的語句 四、 Verilog HDL描述方式 五、 Verilog HDL設(shè)計(jì)流程 六、 用Verilog HDL描述數(shù)字電路的實(shí)例雄摧菱笨纏它候化偉顆烴簇雞鏡住謹(jǐn)酥糊琵紊視蔚撾稱決憊嘗宇龐寂巾漸FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂) 硬件描述語言(HDL)就是可以描述硬件電路的功能、信
20、號(hào)連接關(guān)系及定時(shí)(時(shí)序)關(guān)系的語言,也是一種用形式化方法來描述數(shù)字電路和設(shè)計(jì)數(shù)字系統(tǒng)的。 常用的硬件描述語言有VHDL、Verilog HDL,已成為IEEE的工業(yè)標(biāo)準(zhǔn)硬件描述語言,得到了眾多EDA公司的支持。 晴穢冉汝利癱劊揚(yáng)蛀雪專堰松壟拭綢搞取溉惜桓噎箋禽濤僚錐慚在妝奄搐FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂) VHDL VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口。 Verilog HDL Verilog HDL是在C語言的基礎(chǔ)上發(fā)展而來的硬件描述語言,具有簡(jiǎn)潔、高效、易用的特點(diǎn)。蔭忠侯捎墮襄糕軍楊疾浙獄色池臨光殿菏艇礦氧復(fù)亮壞孩艦圾窗座盈庭湊FPGA技術(shù)教程(通
21、俗易懂)FPGA技術(shù)教程(通俗易懂)語言Verilog HDLVHDL設(shè)計(jì)層次行為描述結(jié)構(gòu)描述系統(tǒng)級(jí)系統(tǒng)算法系統(tǒng)邏輯框圖RTL級(jí)數(shù)據(jù)流圖、真值表、狀態(tài)機(jī)寄存器、ALU、ROM等分模塊描述門級(jí)布爾方程、真值表邏輯門、觸發(fā)器、鎖存器構(gòu)成的邏輯圖版圖級(jí)幾何圖形圖形連接關(guān)系弄瞧流龜遼餞綿偶序角旱來泰絡(luò)范奠限柿王俠險(xiǎn)豈千私淪津題豢似肆攣鵲FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)Verilog HDL語言簡(jiǎn)介能力 設(shè)計(jì)的行為特性、設(shè)計(jì)的數(shù)據(jù)流特性、設(shè)計(jì)的結(jié)構(gòu)組成以及 包含響應(yīng) 監(jiān)控和設(shè)計(jì)驗(yàn)證方面的時(shí)延和波形產(chǎn)生機(jī)制。提供 了編程語言接口,通過該接口可以在模擬、驗(yàn)證期間從設(shè)計(jì) 外部訪問設(shè)計(jì),
22、包括模擬的具體控制和運(yùn)行。主要功能 基本邏輯門,例如and 、or 和nand 等都內(nèi)置在語言中 開關(guān)級(jí)基本結(jié)構(gòu)模型,例如pmos 和nmos 等也被內(nèi)置在語言中 可采用三種不同方式或混合方式對(duì)設(shè)計(jì)建模 兩類數(shù)據(jù)類型 能夠描述層次設(shè)計(jì),可使用模塊實(shí)例結(jié)構(gòu)描述任何層次 能夠使用門和模塊實(shí)例化語句在結(jié)構(gòu)級(jí)進(jìn)行結(jié)構(gòu)描述揮癸安坯場(chǎng)攝稍容臘蛔雍暢玖柿干詠至痞佯薊睬香藏水希占罰劍憐棉懦剔FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)一、 Verilog HDL設(shè)計(jì)模塊的基本結(jié)構(gòu) Verilog HDL程序設(shè)計(jì)由模塊(module)構(gòu)成的, 設(shè)計(jì)模塊的基本結(jié)構(gòu)如圖,一個(gè)完整的Verilog HDL
23、設(shè)計(jì)模塊包括端口定義、I/O聲明、信號(hào)類型聲明和功能描述4個(gè)部分。 1 模塊端口的定義 模塊端口定義用來聲明電路設(shè)計(jì)模塊 的輸入/輸出端口,端口定義格式如下: module 模塊名 (端口1,端口2,端口3,); 在端口定義的括號(hào)中,是設(shè)計(jì)電路模塊與外界聯(lián)系的全部輸入/輸出端口信號(hào)或引腳,是設(shè)計(jì)實(shí)體對(duì)外的一個(gè)通信界面,是外界可以看到的部分(不包含電源和接地端),多個(gè)端口之間用“,”分隔。例如1位全加器adder模塊的端口定義為module adder (S, CO, A, B, CI); 模塊名adder純圖滓兄搖奈門拌市撇秘殆壩揉據(jù)婉汰晴涯抖該臉釀紐典祝裳兌胳菏債傅FPGA技術(shù)教程(通俗易懂
24、)FPGA技術(shù)教程(通俗易懂) 2 信號(hào)類型聲明 信號(hào)類型聲明是聲明設(shè)計(jì)電路的功能描述中所用的信號(hào)的數(shù)據(jù)類型和函數(shù)。信號(hào)的數(shù)據(jù)類型主要有連線(wire)、寄存器(reg)、整型(integer)、實(shí)型(real)、和時(shí)間(time)等。 信號(hào)聲明格式如下: wire msb:lsb 端口1,端口2,端口3,; reg msb:lsb 端口1,端口2,端口3,; 3 功能描述 功能描述是Verilog HDL程序設(shè)計(jì)中最主要的部分,用來描述設(shè)計(jì)模塊的內(nèi)部結(jié)構(gòu)和模塊端口間的邏輯關(guān)系,在電路上相當(dāng)于器件的內(nèi)部電路結(jié)構(gòu)。功能描述可以用assign語句、元件例化(instantiate)方式、alway
25、s塊語句、initial塊語句等方法來實(shí)現(xiàn),通常將設(shè)計(jì)模塊描述的方法稱為建模。哼瘟瀉曰糾賺餓簾滓泡叔鉤爪扭淬戶兜震吵候秀始牛炯驚屢戎埔林劇腕份FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂) 用assign語句建模 用assign語句建模的方法很簡(jiǎn)單,只需要在“assign”后面再加一個(gè)表達(dá)式。assign語句一般適合對(duì)組合邏輯進(jìn)行賦值,稱為連續(xù)賦值方式。例1 一位全加器的設(shè)計(jì)1位全加器的邏輯符號(hào):S是全加器的和輸出端,CO是進(jìn)位輸出端,A和B是兩個(gè)加數(shù)輸入端,CI是低位進(jìn)位輸入端。賓柱重疇監(jiān)樣鏟豎爍省乎侖嗜佬研跌牛觀比疥稗櫥哇孿鄖餐副慨僚輝墳蛛FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)
26、教程(通俗易懂)全加器的Verilog HDL源程序如下: module adder1 (S, CO, A, B, CI); input A, B, CI; output S, CO; wire S, CO, A, B, CI; assign CO, S = A+B+CI; endmodule “assign CO, S = A+B+CI;”語句實(shí)現(xiàn)1位全加器的進(jìn)位輸出CO與和輸出S的建模。在語句表達(dá)式中,用拼接運(yùn)算符“”將CO、S這兩個(gè)1位操作數(shù)拼接為一個(gè)2位操作數(shù)。捧愧衰院賊字性遙征僑羅搪瑟哆甸僑思匡桿像年瓶蛾錦毆裙滓緊伐矩腋誕FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂) 用元
27、件例化(instantiate)方式建模 元件例化方式建模是利用Verilog HDL提供的元件庫(kù)實(shí)現(xiàn)的。例如,用與門例化元件定義一個(gè)三輸入端與門可以寫為and myand3(y,a,b,c); and是Verilog HDL元件庫(kù)中與門元件名,myand3是例化出的三輸入端與門名,y是與門輸出端,a、b、c是輸入端。 用always塊語句建模 always塊語句可以產(chǎn)生各種邏輯,常用于時(shí)序邏輯的功能描述。一個(gè)程序設(shè)計(jì)模塊中,可以包含一個(gè)或多個(gè)always語句。程序運(yùn)行中,在某種條件滿足時(shí),就重復(fù)執(zhí)行一遍always結(jié)構(gòu)中的語句。蛔砸叮邢存贓雌敷魏雕獨(dú)拉障拾炒追汕必譯托蓮蹈舌詳蟻匈椿柞蛾沁巨麗
28、FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂) 例2 8位二進(jìn)制加法計(jì)數(shù)器的設(shè)計(jì)8位二進(jìn)制加法計(jì)數(shù)器的邏輯符號(hào)如圖。OUT是8位二進(jìn)制計(jì)數(shù)器的輸出端(8位向量);COUT是進(jìn)位輸出端(1位);DATA是并行數(shù)據(jù)輸入端(8位向量);LOAD是計(jì)數(shù)器的預(yù)置控制輸入端,當(dāng)LOAD=1時(shí),OUT=DATA;CLK是時(shí)鐘控制輸入端,上升沿為有效邊沿;CLR是同步復(fù)位輸入端,當(dāng)CLK的上升沿到來時(shí)且CLR=1,則計(jì)數(shù)器被復(fù)位,OUT=00000000。 (邏輯符號(hào)圖是由計(jì)算機(jī)對(duì)計(jì)數(shù)器電路的Verilog HDL源代碼編譯后產(chǎn)生的元件符號(hào),圖中的輸入/輸出標(biāo)識(shí)符自動(dòng)被改為大寫,而源程序中的標(biāo)識(shí)符都
29、是小寫。)無扁舉包袍昆繁霉腆甲磕德哩璃輔惦潭謬施攔滅誠(chéng)銀錫豢障絹拍泥夯兒嗡FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂) 8位二進(jìn)制加法計(jì)數(shù)器的Verilog HDL 源程序如下: module cnt8 (out, cout,data,load,cin,clk, clr); input 7:0 data; input load, cin, clk, clr output 7:0 out; output cout; reg 7:0 out; always (posedge clk) begin if (load) out=data; else if(clr) out=b0000000
30、0; else out=out+1; end assign cout = &out; endmodule用always塊語句實(shí)現(xiàn)8位二進(jìn)制加法計(jì)數(shù)器的建模。(posedge clk)是時(shí)間控制敏感函數(shù),表示clk上升沿到來的敏感時(shí)刻。每當(dāng)clk的上升沿到來時(shí),always塊語句中的全部語句就執(zhí)行一遍?!癮ssign cout = &out;”語句產(chǎn)生進(jìn)位輸出cout,在語句中“&out”是與的縮減運(yùn)算式,只有out中數(shù)字全為1時(shí),結(jié)果才為1。蜜禁搜溶隴叢駕孟際蕭遞留態(tài)慢鞋秤曹案慶奸嘆本聽攙烽皺遏鹼匪赫曹欣FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂) 用initial塊語句建模Ini
31、tial塊語句與always語句類似,不過在程序中它只執(zhí)行1次就結(jié)束了。Initial塊語句的使用格式 : Initial Begin 語句1; 語句2; : end例3 用Initial過程語句對(duì)測(cè)試變量賦值 initial begin for(addr=0; addr 大于= 大于等于 右移4 結(jié)果A=8b00001101而A4 結(jié)果A=8b00010000。條件操作符 ?: 操作數(shù)=條件?表達(dá)式1:表達(dá)式2;當(dāng)條件為真(值為1)時(shí),操作數(shù)=表達(dá)式1;為假(值為0)時(shí),操作數(shù)=表達(dá)式2。 三元操作符,即條件操作符有三個(gè)操作數(shù)。例如 a?b:c若條件操作數(shù)a是邏輯1,則算子返回表達(dá)式1操作數(shù)
32、b;若a是邏輯0,則算子返回表達(dá)式2操作數(shù)c。 并接操作符 , 例如 a,2a,b 等價(jià)于a,a,b,a,b。 將1位全加器的進(jìn)位cout和sum并接,表達(dá)式為將兩個(gè)或兩個(gè)以上用逗號(hào)分隔的表達(dá)式按位連接在一起。還可以用常數(shù)來指定重復(fù)的次數(shù)。cout,sum=ina+inb+cin; 綜欽睹謂呀育健風(fēng)訓(xùn)棗殊髓廢梧矚酒洶弓肉腋敷縱恕冉黃塢吼都纂距簽晉FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)同其他高級(jí)語言類似,各類操作符號(hào)之間有優(yōu)先級(jí)之分,如下表:優(yōu)先級(jí)序號(hào)操作符操作符名稱! 、 邏輯非、按位取反*、/、%乘、除、求余+、-加、減左移、右移、 、=小于、小于等于、大于、大于等于=、!
33、=、=、!=等于、不等于、全等、不全等&、& 縮減與、縮減與非 、縮減異或、縮減同或|、 |縮減或、縮減或非&邏輯與|邏輯或?: 條件操作符列表頂部是最高優(yōu)先級(jí),底部是最低優(yōu)先級(jí)。列在同一行中的操作符具有相同的優(yōu)先級(jí)。所有操作符(?:除外)在表達(dá)式中都是從左向右結(jié)合的。圓括號(hào)()用于改變優(yōu)先級(jí)或使得表達(dá)式中運(yùn)算順序更加清晰,提高源文件的可讀性。瘴朵桅誕具崎烴巢油恐抵迭滿蛾疾瑟扭統(tǒng)陽諾痕臨荒訖尾檄碎心講侯月斜FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂) (3)數(shù)值常量 Verilog HDL中的數(shù)值常量有整型和實(shí)型兩大類,分為十進(jìn)制、十六進(jìn)制、八進(jìn)制或二進(jìn)制。若在前面加上一個(gè)正“+”
34、或負(fù)“”號(hào)就表示有符號(hào)數(shù),否則所代表的就是無符號(hào)數(shù)。在數(shù)值常量的任意位置可以隨意插入下劃線“_”以提高可讀性。常量定義格式為: parameter 常量名1=表達(dá)式,常量名2=表達(dá)式,常量名n=表達(dá)式; parameter是常量定義關(guān)鍵字,常量名是用戶定義的標(biāo)識(shí)符,表達(dá)式為常量賦值。例如 parameter Vcc=5, fbus=8b11010001;Verilog HDL中的整型數(shù)值常量就是整數(shù),有兩種書寫格式:一種是無位寬的十進(jìn)制表示法,如-132。第二種是定義位寬和進(jìn)制的表示法,這種表示方法通常是無符號(hào)數(shù)。常數(shù)書寫格式是: sizebase value 其中size是位寬,定義了數(shù)值常
35、量的位數(shù)(長(zhǎng)度);base 代表這個(gè)數(shù)據(jù)的進(jìn)制,取值范圍和相應(yīng)的進(jìn)制如下表;value是一個(gè)數(shù)值常量的值,書寫格式與進(jìn)制base相對(duì)應(yīng)。 例如 16h6a8c,表示一個(gè)4位十六進(jìn)制數(shù)。 8hf5 等于8b11110101; 8b1111xxxx 等價(jià)2hfx; 8b1101zzzz 等價(jià)8hdz。八貫后浸氈家翟栓勘礙墾黎孤肄攝薦泄秋掉腕央費(fèi)祿閨貌伶結(jié)舷碧邁搬徑FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)Verilog HDL中的進(jìn)制base進(jìn)制代碼取值對(duì)應(yīng)的進(jìn)制b或B二進(jìn)制o或O八進(jìn)制d或D十進(jìn)制h或H十六進(jìn)制 Verilog HDL中的實(shí)型數(shù)值常量就是浮點(diǎn)數(shù),可以用十進(jìn)制與科學(xué)計(jì)
36、數(shù)法兩種形式書寫。如果采用十進(jìn)制格式,小數(shù)點(diǎn)兩邊必須都有數(shù)字。 Verilog HDL的編程最終是與硬件相對(duì)應(yīng)的。由于硬件電路中信號(hào)的邏輯狀態(tài)具有特殊性,即不僅有0(低電平)和1(高電平),還有可能是X(未知狀態(tài))和Z(高阻態(tài)),因此Verilog HDL數(shù)值集合有四個(gè)基本值:0:邏輯0或假狀態(tài);1:邏輯1或真狀態(tài);X:邏輯不確定;Z:高阻態(tài)。遺腆竹障廉毀緊機(jī)揣妒鶴謙茅相溜野聾獅潑熊胡徊辣動(dòng)斷矽坯只洶礦哺糙FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)(4)字符串字符串是雙引號(hào)“”括起來的字符序列,必須包含在同 一行中,不能多行書寫。在表達(dá)式或賦值語句中作為操作數(shù)的字符串被看作ASC
37、II值序列,即一個(gè)字符串中的每一個(gè)字符對(duì)應(yīng)一個(gè)8位ASCII值。(5)標(biāo)識(shí)符標(biāo)識(shí)符是模塊、寄存器、端口、連線、示例和begin-end塊等元素的名稱,是賦給對(duì)象的唯一的名稱。標(biāo)識(shí)符可以是字母、數(shù)字、$符和下劃線“_”字符的任意組合序列。定義標(biāo)識(shí)符規(guī)則:首字符不能是數(shù)字,必須以字母或下劃線“_”開頭。字符數(shù)不能多于1024。標(biāo)識(shí)符區(qū)分大小寫。不要與關(guān)鍵字同名。例如 ina、inb、adder、adder8、name_adder是正確的,而1a ?b是錯(cuò)誤的。(6)關(guān)鍵字關(guān)鍵字是Verilog HDL預(yù)先定義的專用詞。在IEEE標(biāo)準(zhǔn)Verilog HDL 1364-1995中規(guī)定了102個(gè)關(guān)鍵詞,
38、都采用小寫形式。關(guān)鍵詞有其特定和專有的語法作用,用戶不能再對(duì)它們做新的定義。滑睹復(fù)胯掛肪黃探哲鎳饞尚茁基助啤余踴半整儲(chǔ)恕娃著冤質(zhì)維頗眠筐賬轄FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)關(guān)鍵字AlwaysandAssignattributeBeginBufBufif0Bufif1CaseCasexCasezCmosDeassignDefaultdefparamDisableedgeelseendendattributeendcaseendfunctionendmoduleendprimitiveendspecifyendtableendtaskeventforforceforever
39、forkfunctionhighz0 highzlifinitialinoutinputintegerjoinlargemacromodulemediummodulenandnegedgenmosnornotnotif0 notifloroutputparameterpmosposedgeprimitivepull0pull1pulldownpulluprcmosrealrealtimeregreleaserepeat rtraniflscalaredsignedsmallspecifyspecpramstrengthstrong0strong1supply0supply1tabletaskt
40、imetrantranif0tranif1 tritri0tri1triandtriortritegunsignedvectoredwaitwandweak0weak1whilewireworxnorxor 植累萌畫擻絢港衛(wèi)框斌撰鴻匆狹擴(kuò)鞭蠱蒼姑醞項(xiàng)偷謊厄嬰婁麗鹼者獰生藤FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂) (7)變量變量是在程序運(yùn)行時(shí)其值可以改變的量。在Verilog HDL中,變量分為網(wǎng)絡(luò)型(nets type)和寄存器型(register type)兩種。 網(wǎng)絡(luò)型變量nets型變量是輸出值始終根據(jù)輸入變化而更新的變量,一般用來定義硬件電路中的各種物理連線。Verilo
41、g HDL提供了多種nets型變量。常見的nets型變量及說明類型功能說明wire、 tri連線類型(兩者功能完全相同)wor、 trior具有線或特性的連線(兩者功能一致)wand、 triand具有線與特性的連線(兩者功能一致)tri1、 tri0分別為上拉電阻和下拉電阻supply1、 supply0分別為電源(邏輯1)和地(邏輯0)s1s2s3謀許貧儲(chǔ)種潮郡淪絕履牲壕車戎淫佯串態(tài)塘賄丈達(dá)熏邁扶肉美忠障搪扔盯FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂) 寄存器型變量register型變量是用來描述硬件系統(tǒng)的基本數(shù)據(jù)對(duì)象。作為一種數(shù)值容器,可以容納當(dāng)前值,也可以保持歷史值。與寄
42、存器的記憶功能相對(duì)應(yīng),可以作為模塊各器件間的信息傳遞通道。register型變量與wire型變量的區(qū)別在于register型變量需要被明確的賦值, 并且在重新賦值前一直保持原值。register型變量是在always、initial等過程語句種定義,并通過過程語句賦值。常見的register型變量及說明類型功能說明reg常用的寄存器型變量integer32位帶符號(hào)整數(shù)型變量real64位帶符號(hào)實(shí)數(shù)型變量time無符號(hào)時(shí)間型變量譚卜攪櫻申麓胰命毋葵疆介恫返薩才嘩簇駁起柏層予市扮弱恫俗蛹伯哆褲FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)三、 Verilog HDL的語句Verilog
43、HDL的語句包括賦值語句、條件語句、循環(huán)語句、結(jié)構(gòu)聲明語句和編譯預(yù)處理語句等類型,每一類語句又包括幾種不同的語句。在這些語句中,有些語句屬于順序執(zhí)行語句,有些語句屬于并行執(zhí)行語句。(1)賦值語句在Verilog HDL中,賦值語句常用于描述硬件設(shè)計(jì)電路輸出與輸入之間的信息傳送,改變輸出結(jié)果。Verilog HDL有4種賦值方法:門基元、連續(xù)賦值、過程賦值和非阻塞賦值。門基元賦值語句門基元賦值語句的格式為:基本邏輯門關(guān)鍵字 (門輸出,門輸入1,門輸入2,門輸入n);例如 4輸入與非門的門基元賦值語句為 nand (y,a,b,c,d); /與語句assign y=(a&b&c&d)等效挺貞剪雜狄
44、真恥尤尼閣蔣供坑髓渡肆仿鉆陽斧效誣果霉壘商卵孔揚(yáng)塊釩俱FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂) 連續(xù)賦值語句連續(xù)賦值語句的關(guān)鍵字assign,賦值符號(hào)是“=”,賦值語句的格式為 assign 賦值變量=表達(dá)式;例如 assign y=(a&b&c&d);連續(xù)賦值語句的“=”兩邊的變量都應(yīng)該是wire型變量。在執(zhí)行中,輸出y的變化跟隨輸入a、b、c、d的變化而變化,反映了信息傳送的連續(xù)性。連續(xù)賦值語句用于邏輯門和組合邏輯電路的描述。例1 四輸入端與非門的Verilog HDL源程序 module example1(y,a,b,c,d); output y; input a,b,c
45、,d; assign #1 y=(a&b&c&d); /#1表示輸出與輸入信號(hào)之間具有1個(gè)單位的時(shí)間延遲 endmodule奄沛失擒錨補(bǔ)摳疑鄙狙隙輿制坐納贊衰熊黎壤猖桌蘆范柞丸敘再腆胃操觸FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂) 過程賦值語句過程賦值語句出現(xiàn)在initial和always塊語句中,賦值符號(hào)是“=”,語句格式為: 賦值變量=表達(dá)式;過程賦值語句“=”左邊的賦值變量必須是(寄存器)reg型變量,其值在該語句結(jié)束時(shí)即可得到。如果一個(gè)塊語句中包含若干條過程賦值語句,按順序一條一條執(zhí)行,前面的語句沒完成,后面的語句就不能執(zhí)行。因此,過程賦值語句也稱為阻塞賦值語句。菲評(píng)系凹
46、校螞褂格擱罷貪佯蕩沼琢核御閥硼靈允針揩獎(jiǎng)術(shù)苯侵艦其墳晃凰FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂) 非阻塞賦值語句非阻塞賦值語句也是出現(xiàn)在initial和always塊語句中,賦值符號(hào)是“=”,語句格式為: 賦值變量=表達(dá)式;非阻塞賦值語句“=”左邊的賦值變量必須是(寄存器)reg型變量,其值在塊語句結(jié)束時(shí)才可得到,與過程賦值語句不同。例如 下面的塊語句包含4條賦值語句 always (posedge clock) begin m=3; n=75; n=m; r=n; end語句執(zhí)行結(jié)束后,r的值是75,而不是3,因?yàn)榈?行是非阻塞賦值語句“n=m”,該語句要等到本塊語句結(jié)束時(shí),
47、n的值才能改變。塊語句的“(posedge clock)”是定時(shí)控制敏感寒暑,表示時(shí)鐘信號(hào)clock的上升沿到來的敏感時(shí)刻。例2 上升沿觸發(fā)的D觸發(fā)器的Verilog HDL源程序 module D_FF(q,d,clock); input d,clock; /屬于wire型變量 output q; /屬于reg型變量 reg q; always (posedge clock) q=d; endmodule危躍井悸椒珊甫攏溢藥晉丫鉗念曙檬滴甭筏幸青置乍舷罕陀瘸淀汾檀晌絳FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂) (2)條件語句條件語句包含if語句和case語句,它們都是順序語句,
48、應(yīng)放在always塊中。 if語句完整的Verilog HDL的if語句結(jié)構(gòu)如下: if(表達(dá)式) begin 語句; end else if(表達(dá)式) begin 語句; end else begin 語句; end在if語句中,“表達(dá)式”是邏輯表達(dá)式或關(guān)系表達(dá)式,也可以是位寬為1位的變量。系統(tǒng)對(duì)表達(dá)式的值進(jìn)行判斷, 若為0,x,z按“假”處理;若為1,按“真”處理,執(zhí)行指定的語句。緯存鮑秧綻霓姿懇勁仆躇喧醬分稼元痔孺榨廬進(jìn)然宋硯共掩遠(yuǎn)理頸寬蘸每FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂) 例3 8線-3線優(yōu)先編碼器的設(shè)計(jì)8線-3線優(yōu)先編碼器的功能表 module code(y,
49、a); input7:0 a; output2:0 y; reg2:0 y; always (a) begin if(a7) y=3b111; else if(a6) y=3b110; else if(a5) y=3b101; else if(a4) y=3b100; else if(a3) y=3b011; else if(a2) y=3b010; else if(a1) y=3b001; else y=3b000; end endmodule輸入輸出in0 in1 in2 in3 in4 in5 in6 in7out2 out1 out0 x x x x x x x 0 x x x x x
50、 x 0 1 x x x x x 0 1 1 x x x x 0 1 1 1 x x x 0 1 1 1 1 x x 0 1 1 1 1 1 x 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0燎艘臆憑湃蛋接候課江渭峰彪鵑獸撫粱一轄匈扔蠶掣蔑砸潦章飄國(guó)貓紅屬FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂) case語句 case語句是一種多分支的條件語句,case語句的格式為: case(表達(dá)式) 選擇值1: 語句1; 選擇值2: 語句2; 選擇值n: 語句n; default:
51、語句n+1 endcase 執(zhí)行case語句時(shí),首先計(jì)算表達(dá)式的值,然后執(zhí)行條件句中相應(yīng)的“選擇值”的語句。當(dāng)所有的條件句的“選擇值”與表達(dá)式的值不同時(shí),則執(zhí)行“default”后的語句。default可以省略。 case語句多用于數(shù)字系統(tǒng)中的譯碼器、數(shù)據(jù)選擇器、狀態(tài)機(jī)及微處理器的指令譯碼器等電路的描述。輔挺她波叔姆膏呻家噎戈膽彎別彥巾穎虎湃兒侶緯丫哉?qǐng)?jiān)捂昭嗜蟄近斬葫FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂) 例4:用case語句描述4選1數(shù)據(jù)選擇器控制信號(hào)s1,s2有4種組合,控制a,b,c,d中的一個(gè)數(shù)據(jù)送到輸出端。4選1數(shù)據(jù)選擇器Verilog HDL的描述如下: modu
52、le mux41(z,a,b,c,d,s1,s2); input s1,s2; input a,b,c,d; output z; reg z; always (a,b,c,d,s1,s2) begin case(s1,s2) 2b00: z=a; 2b01: z=b; 2b10: z=c; 2b11: z=d; endcase end endmodulecase語句還有兩種變體形式,casez和casex語句。與case語句的區(qū)別是不考慮語句中的高阻z和未知x的那些位,只關(guān)注其他位的比較結(jié)果。s1 s2z0 00 11 01 1abcd4選1數(shù)據(jù)選擇器功能表楞莖扣呼況蓑謗骨銜女重衣尿攙巢暗達(dá)檄
53、燭奪荔兢秧饋厲端太組瑤叛婆銑FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂) (3)循環(huán)語句循環(huán)語句包含for語句、repeat語句、while語句和forever語句4種。 for語句for語句的格式為: for(循環(huán)指針=初值;循環(huán)指針 終值;循環(huán)指針=循環(huán)指針+步長(zhǎng)值) begin 語句; endfor語句可以是一組語句重復(fù)執(zhí)行,語句中的參數(shù)一般屬于整型變量或常量。語句重復(fù)執(zhí)行的次數(shù)由語句中的參數(shù)確定。即 循環(huán)重復(fù)次數(shù)=(終值-初值)/步長(zhǎng)值蘊(yùn)偽氮饅揀通革擬摟鹵罷寧尹畸嫁擔(dān)潮茨狽醫(yī)路雕曠取埋參咱仿臻及邢絨FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂) 例5:8位奇偶校驗(yàn)
54、器的描述用a表示輸入信號(hào),長(zhǎng)度為8位的向量。在程序中,用for語句對(duì)a的值,逐位進(jìn)行模2加運(yùn)算(即異或XOR),循環(huán)指針變量n控制模2加的次數(shù)。 11100110 奇數(shù)個(gè)1循環(huán)變量的初值為0,終值為8,因此,控制循環(huán)共執(zhí)行了8次。 例5 用Verilog HDL對(duì)8位奇偶校驗(yàn)器的描述如下: module test8(a,out); input7:0 a; output out; reg out; integer n; always (a) begin out=0; for(n=0;n=b) max=a; else max=b; end endfunction 函數(shù)調(diào)用的格式如下 函數(shù)名 (關(guān)聯(lián)
55、參數(shù)表); 函數(shù)調(diào)用一般是出現(xiàn)在模塊、任務(wù)或函數(shù)語句中。通過函數(shù)的調(diào)用來完成摹寫數(shù)據(jù)的運(yùn)算或轉(zhuǎn)換。例如,調(diào)用上例中求最大值函數(shù)的語句為 z=max(x, y);其中,x和y是與函數(shù)定義的兩個(gè)參數(shù)a、b相關(guān)聯(lián)的關(guān)聯(lián)參數(shù)。通過函數(shù)的調(diào)用,求出x和y中的最大值,并用函數(shù)名max返回。寥淺碧庸嶺侄滄媚那眨青鐮柬了秩碌叭與壺腕暈觀造約財(cái)藉簽嚏質(zhì)業(yè)鄙弧FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂) 函數(shù)和任務(wù)存在以下幾處區(qū)別:(1)任務(wù)可以有任意不同類型輸入/輸出參數(shù),函數(shù)不能將inout類型作為輸出。(2)任務(wù)只可以在過程語句中調(diào)用,不能在連續(xù)賦值語句assign中調(diào)用;函數(shù)可以作為表達(dá)式中的
56、一個(gè)操作數(shù),在過程賦值語句和連續(xù)賦值語句中調(diào)用。 (3)任務(wù)可以調(diào)用其他任務(wù)或函數(shù);函數(shù)可以調(diào)用其他函數(shù),但不能調(diào)用任務(wù)。 (4)任務(wù)不向表達(dá)式返回值,函數(shù)向調(diào)用它的表達(dá)式返回一個(gè)值。芥篙蒜醋甩椽罵稈原恐充灑攤蓄慘鹽返徊槍攘葷燦眾劃姑禍卞折醇找蛹寞FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)(5)語句的順序執(zhí)行與并行執(zhí)行Verilog HDL中有順序執(zhí)行語句和并行執(zhí)行語句之分。always塊語句中的語句是順序語句,按照程序書寫的順序執(zhí)行。always塊本身確是并行語句,它與其他always語句及assign語句、元件例化語句的執(zhí)行都是同時(shí)(即并行)的。例9 同步清除十進(jìn)制加法計(jì)數(shù)器
57、的描述同步清0是在時(shí)鐘信號(hào)作用下,計(jì)數(shù)器的狀態(tài)被clr清0,清0信號(hào)clr高電平有效;時(shí)鐘信號(hào)clk上升沿觸發(fā)。計(jì)數(shù)器計(jì)數(shù)狀態(tài)從4b0000到4b1001循環(huán)。module cnt10(clr,clk,q,co); input clr,clk; output3:0 q; output co; reg 3:0 q; reg co; always (posedge clk) begin if(clr) begin co=0; q=4b0000;end else if (q=4b1001) begin q=4b0000; co=1;end else begin co=0; q=q+1;end end
58、 endmodule 杠苑牛贓磨煥施知燕氫鍋綠賄臣績(jī)漫滾祭抬卻淋奎霖癥斤順填約肥陣舟絞FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)五、 Verilog HDL的描述方式(建模方法)系統(tǒng)級(jí)(system): 用高級(jí)語言結(jié)構(gòu)實(shí)現(xiàn)設(shè)計(jì)模塊的外部性能的模型。算法級(jí)(algorithmic): 用高級(jí)語言結(jié)構(gòu)實(shí)現(xiàn)設(shè)計(jì)算法的模型。 RTL級(jí)(Register Transfer Level): 描述數(shù)據(jù)在寄存器之間流動(dòng)和如何處理這些數(shù)據(jù)的模型。 門級(jí)(gate-level): 描述邏輯門以及邏輯門之間的連接的模型。開關(guān)級(jí)(switch-level): 描述器件中三極管和儲(chǔ)存節(jié)點(diǎn)以及它們之間連接的
59、模型。 用Verilog HDL描述的電路就稱為該設(shè)計(jì)電路的Verilog HDL模型建模層次:不同抽象級(jí)別的Verilog HDL模型腔磋餡筷材賀磐扳甩窒亢黃注豆村喉機(jī)堪么瑰劉悼強(qiáng)毋糧孵署苯走舞廬世FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)描述方式: 1、結(jié)構(gòu)描述:描述元器件間連接關(guān)系:例化2、數(shù)據(jù)流描述:描述電路數(shù)據(jù)流行為:assign3、行為描述:描述功能:always4、混合描述:Verilog允許多描述方式共存于同一模塊。瓷回拆趕卸殘迭修核羊潑端冤逢廖杭閨府悲勺貶呈嫌丁熒芒繭翔火她嗜部FPGA技術(shù)教程(通俗易懂)FPGA技術(shù)教程(通俗易懂)751 結(jié)構(gòu)描述1) 基于庫(kù)元
60、件的結(jié)構(gòu)描述門類型關(guān)鍵字 ( );門級(jí)描述即直接調(diào)用門原語進(jìn)行邏輯的結(jié)構(gòu)描述。 以門級(jí)為基礎(chǔ)的結(jié)構(gòu)描述所建立的硬件模型不僅是可仿真的,也是可綜合的;一個(gè)邏輯網(wǎng)絡(luò)由許多邏輯門和開關(guān)組成,用邏輯門的模型來描述邏輯網(wǎng)絡(luò)最直觀!門類型的關(guān)鍵字有26個(gè),常用的有9個(gè): not,and,nand,or,nor,xor,xnor,buf, bufif1,bufif0,notif1,notif0(各種三態(tài)門)調(diào)用門原語的句法:注1:在 端口列表中輸出信號(hào)列在最前面;注2:門級(jí)描述不適于描述復(fù)雜的系統(tǒng)!門級(jí)描述可省略! 驟毫吾色懈羊諱誓員躍追濁笆也羅咱辱攏侯鉤媚乏主彌肪參逆姐物嬌惺砂FPGA技術(shù)教程(通俗易懂)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 裝修糾紛裝飾補(bǔ)充協(xié)議范本
- 技術(shù)合作合同書
- 高中數(shù)學(xué) 8.2.3 二項(xiàng)分布(2)教學(xué)設(shè)計(jì) 蘇教版選擇性必修第二冊(cè)
- 2024年高中地理 第4章 文明旅游 4.4 旅游安全教案 湘教版選修3
- 2024年八年級(jí)生物下冊(cè) 6.1.2生物對(duì)環(huán)境的適應(yīng)和影響教學(xué)設(shè)計(jì) (新版)濟(jì)南版
- 2023七年級(jí)數(shù)學(xué)上冊(cè) 第4章 圖形的初步認(rèn)識(shí)4.1 生活中的立體圖形教案 (新版)華東師大版
- 2024-2025版高中物理 第四章 電磁感應(yīng) 5 電磁感應(yīng)現(xiàn)象的兩類情況教案 新人教版選修3-2
- 總部園區(qū)基地物業(yè)管理合同(2篇)
- 銀行防控風(fēng)險(xiǎn)合同(2篇)
- 湘教版福建省福州市八縣(市、區(qū))一中2023-2024學(xué)年高一上學(xué)期11月期中聯(lián)考數(shù)學(xué)試題
- 2024-2030年中國(guó)農(nóng)業(yè)衛(wèi)星數(shù)據(jù)服務(wù)行業(yè)發(fā)展戰(zhàn)略與投資規(guī)劃分析報(bào)告
- 江蘇省南京市鼓樓區(qū)2024-2025學(xué)年七年級(jí)上學(xué)期期中數(shù)學(xué)試卷(含答案解析)
- 網(wǎng)絡(luò)信息安全管理作業(yè)指導(dǎo)書
- 2023年阜陽職業(yè)技術(shù)學(xué)院人才招聘筆試真題
- (一模)寧波市2024學(xué)年第一學(xué)期高考模擬考試 化學(xué)試卷(含答案)
- GB/T 44481-2024建筑消防設(shè)施檢測(cè)技術(shù)規(guī)范
- 第三單元名著導(dǎo)讀《駱駝祥子》整本書閱讀教學(xué)設(shè)計(jì)+2023-2024學(xué)年統(tǒng)編版語文七年級(jí)下冊(cè)
- 部編語文五上《父愛之舟》說課:聚焦場(chǎng)景抓細(xì)節(jié)-探究真心品真情
- 勞動(dòng)一年級(jí)上冊(cè)(人民版)第十課《我?guī)桶謰寭駬癫恕罚ń虒W(xué)設(shè)計(jì))
- 《紙質(zhì)文物修復(fù)與保護(hù)》課件-30古籍的版式
- 撳針操作規(guī)程
評(píng)論
0/150
提交評(píng)論