版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
產品研發(fā)中心應用產品組蔣偉2012年2月
FPGA內部技術培訓目錄2什么是FPGA?1VerilogHDL語言基礎3如何使用ISE開發(fā)環(huán)境4FPGA開發(fā)實踐1、什么是FPGA?1.1可編程邏輯器件基礎1、什么是FPGA?1.1可編程邏輯器件基礎18x18bitEmbeddedPipelinedMultipliersforefficientDSPConfigurable18KBlockRAMs+DistributedRAM4I/OBanks,Supportfor
allI/OStandardsincludingPCI?,DDR333,RSDS,mini-LVDSGuaranteedDensityMigrationNumerouspartsinthesamepackageUptoeighton-chipDigitalClockManagerstosupportmultiplesystemclocksBank0Bank1Bank
2Bank31.1可編程邏輯器件基礎
可編程邏輯器件(ProgrammableLogicDevice,PLD)
顧名思義,完全由用戶通過軟件進行配置和編程,從而完成某種特定的功能,而且可以反復擦寫的器件。
PLD產品
PROM編程只讀存儲器
FPLA現場可編程邏輯陣列
PAL可編程陣列邏輯
GAL通用陣列邏輯
EPLA可擦除的可編程邏輯陣列
CPLD復雜可編程邏輯器件
FPGA(FieldProgrammableArray)現場可編程門陣列,屬于可編程邏輯器件的一種。通過可編程互連連接的可配置邏輯塊(CLB)矩陣構成的可編程半導體器件。1、什么是FPGA?1.1可編程邏輯器件基礎準確地將用戶設計轉換為電路模塊能夠高效地利用器件資源能夠快速地完成編譯和綜合提供豐富的IP核資源用戶界面友好,操作簡單PLD開發(fā)軟件
優(yōu)秀的PLD開發(fā)軟件Xilinx公司的ISEAltera公司的QuartusII、MaxplusII1、什么是FPGA?1.1可編程邏輯器件基礎1.2FPGA工作原理四輸入一輸出的電路模塊??ABZCD1、什么是FPGA?1.2FPGA工作原理查找表(Look-Up-Table)LUTLUT本質就是一個RAM。FPGA多使用4輸入一輸出的LUT,一個LUT等效于為一個有4位地址線的16×1的RAM。將真值表寫入RAM后,每輸入一個信號進行邏輯運算,就等于輸入一個地址進行查表,找出地址對應的內容后輸出即可。4-inputlogicfunctionLUT=CDZABTruthTable圖1-1LUT原理示意圖1、什么是FPGA?1.2FPGA工作原理FPGA工作原理的實質FPGA的工作狀態(tài)實質是由片內RAM(LUT)決定的,所以通過對片內RAM進行編程(配置LUT,更新真值表),就能完成某種特定功能。1、什么是FPGA?1.2FPGA工作原理FPGA芯片結構
FPGA主要由6個部分組成:IOB(可配置輸入輸塊)CLB(可配置邏輯塊)DCM(時鐘管理單元)BRAM(嵌入式塊RAM)WIRE(布線資源)IP核(內嵌底層功能單元和專用硬件模塊)1.3FPGA芯片結構1、什么是FPGA?1.2FPGA工作原理CLBCLBCLBCLBBRAMBRAMCLBCLBIOBIOBDCMIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOB圖1-2FPGA芯片的內部結構1、什么是FPGA?1.2FPGA工作原理定義:芯片與外界電路的接口部分。
功能:
匹配不同的電氣特性、I/O標準、I/O物理特性。比如調整驅動電流的大小、上下拉電阻、頻率、TTL、LVDS。IOB(可編程輸入輸出塊)WIRE(布線資源)布線資源用于連通FPGA內部的所有單元。
第一類:全局布線資源,用于芯片內部全局時鐘和全局復位布線。
第二類:長線資源,用于BANK間的高速信號。
第三類:短線資源,用于基本邏輯單元間的互連和布線。
第四類:分布式資源,用于專用時鐘、復位等控制信號。1、什么是FPGA?1.2FPGA工作原理BRAM(嵌入式塊RAM)4096x4Dual-PortDOA[3:0]DOB[3:0]WEAENARSTAADDRA[11:0]CLKADIA[3:0]WEBENBRSTBADDRB[11:0]CLKBDIB[3:0]1、什么是FPGA?1.2FPGA工作原理BRAM(嵌入式塊RAM)1、什么是FPGA?1.2FPGA工作原理DCM(時鐘管理單元)1、什么是FPGA?1.2FPGA工作原理DCM(時鐘管理單元)DCMDCMDCMDCM1、什么是FPGA?1.2FPGA工作原理CLB是FPGA內部基本的邏輯單元。
CLB包含:一個可配置的開關矩陣、一些選型電路(多路復用器)和觸發(fā)器組成。CLB(可配置邏輯塊)XILINX的CLB
CLB=SwitchMatrix+4Slice+附加邏輯。
(開關矩陣)(2SLICEM+2SLICEL)Slice是XILINX定義的基本邏輯單位。由2個4/6輸入的查找表、進位邏輯、算數邏輯、存儲邏輯、復用器組成。1、什么是FPGA?1.2FPGA工作原理CINSwitchMatrixCOUTCOUTSLICEMS0X0Y0SLICEMS1X0Y1SLICELS2X1Y0SLICELS3X1Y1CINSHIFTCLB示意圖CLB(可配置邏輯塊)1、什么是FPGA?1.2FPGA工作原理IP核:具有知識產權的集成電路芯核總稱。分為軟核、固核、硬核。IP核(內嵌底層功能單元和專用硬件模塊)軟核:對電路的硬件語言描述,包括邏輯描述、網表和幫助文檔等,以用HDL文本形式提交給用戶。
固核:
IP固核的設計程度則是介于軟核和硬核之間,除了完成軟核所有的設計外,還完成了門級電路綜合和時序仿真等設計環(huán)節(jié)。一般以門級電路網表的形式提供給用戶。
硬核:基于半導體工藝的物理設計,布局和工藝固定、經過前端和后端驗證的設計,設計人員不能對其修改。其提供給用戶的形式是電路物理結構掩模版圖和全套工藝文件,是可以拿來就用的全套技術。
1、什么是FPGA?1.2FPGA工作原理1、什么是FPGA?1.3FPGA開發(fā)流程1.3FPGA開發(fā)流程FPGA設計方法硬件設計包括:FPGA芯片電路、存儲器、輸入\輸出接口電路以及其他設備。軟件設計思想:自頂向下頂層系統(tǒng)2級模塊A2級模塊B2級模塊C3級模塊A33級模塊A23級模塊A13級模塊C23級模塊C11、什么是FPGA?1.3FPGA開發(fā)流程軟件設計流程1、什么是FPGA?1.4XILINX公司FPGA簡介1.4XILINX公司FPGA簡介XILINX公司目前有兩大類FPGA產品:Spartan類和Virtex類。前者面向低成本的中低端應用。后者面向高端應用。兩者的差異僅限于芯片的規(guī)模和專用模塊上。1、什么是FPGA?1.4XILINX公司FPGA簡介1.4XILINX公司FPGA簡介2、VerilogHDL語言基礎2.1VerilogHDL簡介
HDL:具有特殊結構能夠對硬件邏輯電路的功能進行描述的一種高級編程語言。
這種特殊結構能夠: –描述電路的連接 –描述電路的功能 –在不同抽象級上描述電路 –描述電路的時序 –表達具有并行性HDL主要有兩種:Verilog和VHDL。Verilog起源于C語言,因此非常類似于C語言,容易掌握什么是硬件描述語言HDL2、VerilogHDL語言基礎2.1VerilogHDL簡介?VerilogHDL是在1983年由GDA(GateWayDesignAutomation)公司的PhilMoorby所創(chuàng)。PhiMoorby后來成為Verilog-XL的主要設計者和Cadence公司的第一個合伙人。?在1984~1985年間,Moorby設計出了第一個Verilog-XL的仿真器。?1986年,Moorby提出了用于快速門級仿真的XL算法。?1990年,Cadence公司收購了GDA公司?1991年,Cadence公司公開發(fā)表Verilog語言,成立了OVI(OpenVerilogInternational)組織來負責VerilogHDL語言的發(fā)展。?1995年制定了VerilogHDL的IEEE標準,即IEEE1364。VerilogHDL的歷史2、VerilogHDL語言基礎2.1VerilogHDL簡介二選一選擇器的實現:modulemuxtwo(out,a,b,sel);inputa,b,sel;outputout;regout;always@(seloraorb)
if(!sel)out=a;elseout=b;endmoduleVerilogHDL的基本程序結構2、VerilogHDL語言基礎2.2基本概念詞法約定空白符:空格、換行、制表TAB。除了字符串中的空白符,空白符僅僅用于分辨標識符,編譯的時候忽略。注釋:單行注釋//,多行注釋/**/操作符:單目、雙目、三目操作符數字聲明:聲明位數和不聲明位數(默認十進制),建議聲明位數。不確定值X,高阻值Z。8’b0x11_00z1,12’habc,16’d255,25,’o25,-6’d3字符串:”hello”標識符:字母、數字、_、$組成,區(qū)分大小寫,第一個字符必須是字母或者下劃線。關鍵字:特殊標識符,全小寫。2、VerilogHDL語言基礎2.2基本概念數據類型(表示數字電路硬件中的數據存儲和傳送元素)四值邏輯:0、1、X、Z主要包含:wire型、reg型、memory型和parameter型,共19種wire型
硬件單元之間的連接,連線。wirea,b,c=1’b1,d;wiree[7:0];//位寬為8的wire信號,向量2、VerilogHDL語言基礎2.2基本概念reg型存儲元件,保持原有數字,直到被改寫。數據存儲單元的抽象。rega,b,c=1’b1,d;//位寬為1的寄存器rege[7:0];//位寬為8的寄存器memory型對reg變量建立數組來對存儲器建模,描述RAM、ROMrega[0,1024];//1K的1位寄存器reg[7:0]e[0:1024];//1K的8位寄存器,寬度和深度2、VerilogHDL語言基礎2.2基本概念parameter型定義常量,提高可讀性和可維護性parameter∏=3.1415926;parameter[3:0]S0=4’h0,S1=4’h1,S2=4’h2,S3=4’h3;2、VerilogHDL語言基礎2.2基本概念integer、real、time、字符串型通用的寄存器數據類型,用于對數量進行操作。integercounter;integercounter[0:7];realdelay;timedelaytime;real[8*3-1,0]string;string=“boy”;2、VerilogHDL語言基礎2.2基本概念編譯指令‘define:定義文本宏
‘defineWordSize16’include:將一個Verilog文件包含在另一個Verilog文件中‘include“moled.v”2、VerilogHDL語言基礎2.3操作符和表達式算術操作符2、VerilogHDL語言基礎2.3操作符和表達式關系操作符2、VerilogHDL語言基礎2.3操作符和表達式邏輯操作符2、VerilogHDL語言基礎2.3操作符和表達式按位操作符2、VerilogHDL語言基礎2.3操作符和表達式等價操作符2、VerilogHDL語言基礎2.3操作符和表達式條件操作符、移位操作符、拼接操作符、縮減操作符、2、VerilogHDL語言基礎2.3操作符和表達式縮減操作符A=4’b0110;&A;//相當于0&1&1&02、VerilogHDL語言基礎2.3操作符和表達式條件操作符、拼接操作符、縮減操作符條件運算符:?:A?B:C拼接運算符:{,}A=4’b0100;B=4’b1100;C=4’b1001;Y={A,B,C,4’b0010}=0100_1100_1001_0010;2、VerilogHDL語言基礎2.3操作符符和表達式操作符優(yōu)先級2、VerilogHDL語言基礎2.3運算符和表達式賦值運算符=,<=A=b;c=1’b1;//阻塞賦值??C<=d;d<=2’b01;//非阻塞賦值??2、VerilogHDL語言基礎2.4模塊和端口模塊?module能夠表示:–物理塊,如IC或ASIC單元–邏輯塊,如一個CPU設計的ALU部分–整個系統(tǒng)?每一個模塊的描述從關鍵詞module開始,有一個名稱(如SN74LS74,DFF,ALU等等),由關鍵詞endmodule結束。2、VerilogHDL語言基礎2.4模塊和端口端口?注意模塊的名稱DFF,端口列表及說明?模塊通過端口與外部通信2、VerilogHDL語言基礎2.4模塊和端口端口列表和聲明module(sum,clk,a,b,c_in);inputclk,a,c_in;//wireoutputsum;inoutb;//wireregsum;endmodule2、VerilogHDL語言基礎2.4模塊和端口模塊例化2、VerilogHDL語言基礎2.5門級建模(結構化描述)門類型and,or,xor,buf,not,nand,nor,xnor舉例:moduleadder(A,B,Cin,Sum,Count);
xorx1(S1,A,B);xorx2(Sum,S1,Cin);andA1(T3,A,B);andA2(T2,B,Cin);andA3(T1,A,Cin);orO1(Cout,T1,T2,T3);endmodule定義:對電路結構的描述2、VerilogHDL語言基礎2.6數據流建模語法格式:assignL_S=R_S;采用assign連續(xù)賦值來實現,只能實現組合邏輯。左值必須是線網(標量或者向量),右值可以是線網、寄存器、函數調用。賦值語句總是處于激活狀態(tài),只要右邊操作數發(fā)生變化,立即將結果賦給左邊的線網。module(out,sum,a,b,c,d,e,f);inputa,b,e,f;input[15:0]c,d;outputout,sum;assignout=a&b;assignout[15:0]=c[15:0]&d[15:0];assign#10out=e&f;endmodule定義:對數據流的具體行為的描述2、VerilogHDL語言基礎2.7行為級建模定義:對電路外部行為的角度進行描述。行為級建模主要包括:過程結構、語句塊、時序控制、流控制過程結構過程結構采用4種過程語句來實現:initial語句、always語句、task語句、function語句initial語句、always語句又是最基本的兩種語句,其他所有行為語句都只能出現在這個兩個語句中。initial語句只用于仿真,不可綜合。always語句可被綜合。initial語句、always語句都是同時并行執(zhí)行,但initial語句只執(zhí)行一次,always語句則是重復執(zhí)行。只有寄存器類型信號才可以在initial語句、always語句被賦值2、VerilogHDL語言基礎2.7行為級建模initial語句語法格式:initialbegin/fork………………//塊能變量說明、行為語句end/join應用舉例:
modulestimulus;rega,b,c;initiala=1’b1;initialbegin#5b=1’b1;#10c=1’b1;endendmodule2、VerilogHDL語言基礎2.7行為級建模always語句語法格式:always@(敏感事件列表)begin/fork………………//塊能變量說明、行為語句end/join//實現組合邏輯和時序邏輯應用舉例:
modulestimulus;rega,b,c,d;always@(posedgeclk)begininitialbegin…a=0;b=0;c=0;endend………………alwaysbeginalways@(aorborc)begin#2a=~a;d=a?b:c;alwaysbeginend#5b=~b;#10c=~c;endendmodule組合邏輯中,敏感變量(等式右邊所有的標識符)必須全寫。組合邏輯中,使用阻塞賦值“=”時序邏輯中采用非阻塞賦值“<=”2、VerilogHDL語言基礎2.7行為級建模過程賦值語句更新寄存器、整數、實數或者時間變量。只有在執(zhí)行到的時候才起作用。分為:阻塞賦值”=“與非阻塞賦值語句”<=“moduleinitialbegina=1’b1;#5b=1’b1;#10c=1’b1;endendmodulemoduleinitialbegina<=1’b1;#5b<=1’b1;#10c<=1’b1;endendmodule允許賦值調度!2、VerilogHDL語言基礎2.7行為級建模語句塊在initial語句或always語句中,位于begin...end/fork…join塊語句之間的一組行為語句。兩者可混合使用(包括嵌套使用)。begin
……end:用來組合需要順序執(zhí)行的語句,稱為順序塊。initialbegina=1’b0;b=1’b1;c={a,b};d={b,c};endfork……join:用來組合并行執(zhí)行的語句,稱為并行塊。initialforka=1’b0;b=1’b1;c={a,b};//競爭!(同一時刻對同一變量產生影響)d={b,c};//競爭!
join2、VerilogHDL語言基礎2.7行為級建模時序控制分為:延時控制和事件控制延時控制:#5a=b;事件控制:@(aorborc)等價@(a,b,c)@(posedgeclk)2、VerilogHDL語言基礎2.7行為級建模流控制流控制語句包括:跳轉、分支和循環(huán)語句if語句if()elseif()elsecase語句case()casex()casez()
表達式:聲明;default:聲明;endcaseendcaseendcase循環(huán)語句
for()、while()、forever、repeat2、VerilogHDL語言基礎2.7行為級建模task任務聲明:task………endtaskmodulefpga_train();
always@(posedgeclk1)
beginand_operation(ab_and,a,b);//變量的指定必須按照定義的順序!
end
always@(posedgeclk2)
beginand_operation(cd_and,c,d);endtask
automaticand_operation;//自動任務
outputab_and_inst;inputa_inst,b_inst;
beginab_and_inst=a_inst&b_inst;endendtask;endmodule2、VerilogHDL語言基礎2.7行為級建模function任務modulefpga_train();
always@(posedgeclk1)
beginc=and_operation(a,b);endfunctionautomatic[7:0]and_operation;//自動函數,生成一個名為函數標識符的寄存器變量
inputa_inst,b_inst;
beginand_operation=a_inst&b_inst;endendfunction;endmodule2、VerilogHDL語言基礎2.7行為級建模task和function的區(qū)別1、函數至少有一個輸入變量,任務不定。2、函數必須有一個返回值。任務不返回值,可通過OUT變量傳遞值。3、函數不能包含延遲、事件、時序控制,任務可包含。4、函數可調用函數,不能調用任務。任務可調用任務和函數。ImplementingaDesignintoaXilinxDeviceTranslateMapPlace&RoutePlan&
BudgetHDLRTLSimulationSynthesizetoCreateNetlistFunctionalSimulationCreate
BITFileAttainTimingClosureTimingSimulationImplementCreateCode/Schematic3、如何使用ISE開發(fā)環(huán)境3.1ISE開發(fā)流程ProjectNavigatoristheGraphicalInterfacetotheISEToolSuiteProjectNavigatorwindowsSourcesProcessesSummaryWorkingMessage3、如何使用ISE開發(fā)環(huán)境3.2ISE交互窗口CreatingaProjectSelectFile
NewProjectNewProjectWizardguidesyouthrough
theprocessProjectname
andlocationTargetdeviceSoftwareflowCreateoraddsourcefiles3、如何使用ISE開發(fā)環(huán)境3.2ISE交互窗口CreatingandAddingSourceFilesClickCreateNewSourceandchoosethetypeoffiletocreateanewsourcefileHDLIPConstrai
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國企業(yè)智能化成熟度報告(2024) -企業(yè)智能化轉型進入2.0時代
- 廣東省中山市高考語文模擬試題(含答案)
- 2025年外研銜接版九年級歷史上冊月考試卷
- 2025年新世紀版必修3歷史下冊月考試卷含答案
- 2025年粵教版選修4歷史上冊月考試卷含答案
- 2025年西師新版必修3生物上冊階段測試試卷
- 2025年浙教版七年級歷史下冊階段測試試卷含答案
- 2025年廣西金融職業(yè)技術學院高職單招高職單招英語2016-2024歷年頻考點試題含答案解析
- 2025年廣西衛(wèi)生職業(yè)技術學院高職單招高職單招英語2016-2024歷年頻考點試題含答案解析
- 2025年廣東女子職業(yè)技術學院高職單招職業(yè)適應性測試近5年常考版參考題庫含答案解析
- 【超星學習通】馬克思主義基本原理(南開大學)爾雅章節(jié)測試網課答案
- 2024年中國工業(yè)涂料行業(yè)發(fā)展現狀、市場前景、投資方向分析報告(智研咨詢發(fā)布)
- 化工企業(yè)重大事故隱患判定標準培訓考試卷(后附答案)
- 工傷賠償授權委托書范例
- 電梯使用轉讓協(xié)議書范文
- 工程變更履歷表
- 煤礦崗位標準化作業(yè)流程
- 唯物史觀課件
- 信息資源管理(馬費成-第三版)復習重點
- 郵輪外部市場營銷類型
- GB/T 42460-2023信息安全技術個人信息去標識化效果評估指南
評論
0/150
提交評論