1.FPGA基础知识
生活随笔
收集整理的這篇文章主要介紹了
1.FPGA基础知识
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.FPGA公司
Xilinx(賽靈思)、Altera(阿爾特拉)、萊迪思(Lattice)、infineon(英飛凌)2.Altera公司FPGA系列
MAX系列、Cyclone系列、Arria系列、Stratix系列、Agile系列Cyclone系列命令方法: 器件系列+器件類型(是否含有高速收發器)+LE邏輯單元數量+封裝類型+高速串行收發器數量(沒有則不寫)+引腳數目+器件正常使用的溫度范圍+器件的速度等級+后綴EP4CE10F17C8N:EP4C:Altera 器件 Cyclone IV 系列E/GX:E 表示普通邏輯資源豐富的器件,GX 表示帶有高速串行收發器的器件;10:LE 邏輯單元的數量,單位為 k,10 表示約有 10k 的邏輯單元C:表示高速串行收發器的數量,該芯片沒有高速串行收發器所以不寫F:表示 PCB 封裝類型,F 是 FBGA 封裝,E(EQFP)、Q(PQFP)、U(UBGA)、M(MBGA)17:表示引腳數量,17 代表有 256 個引腳C:工作溫度,C 表示可以工作在 0℃到 85℃(民用級),I 表示可以工作在-40℃到 100℃(工業級),A 表示可以工作在-40℃到 125℃(軍用級)8:器件的速度等級,6 最大約是 500MHz,7 最大約是 430MHz,8 最大約是400MHz,可以看出在 Altera 的器件中數字越小表示速度越快,而在 Xilinx 的器件中數字越大表示速度越快;一般來講,提高一個速度等級將帶來 12%到 15%的性能提升,但是器件的成本卻增加了 20%大 30%。如果利用設計結構來將性能提升12%到 15%(通過增加額外的流水線),那么就可以降低速度等級,從而節約20%大 30%的成本N:后綴,N 表示無鉛,ES 代表工程樣片3.FPGA內部硬件結構
FPGA之所以實現現場可編程是因為FGPA內部又很多可供用戶任意配置的資源:其中包括:可編程邏輯陣列、可編程I/O、互連線、IP核等。 學過數字電路的人都知道,使用與、或、非門的任意組合幾乎可以實現所有的數字電路,但是FGPA內部最基本的主要單元并不是這些與、或、非門,而是由無數個查找表核寄存器構成(這些也是由最基本的與、或、非門組成)4. FPGA開發相關軟件
Quartus:(1)軟件開發軟件,主要用于編譯程序使用(2)使用該軟件進行Altera進行FGPA芯片的開發(3)開發軟禁啊的使用離不開器件庫,器件庫的安裝有2種方式:一種是與開發軟件一并安裝。另外一種是獨立安裝(4)將器件庫和開發軟件分開獨立安裝,軟件安裝完畢后,開始器件庫的安裝,該FGPA芯片屬于CycloneIV系列,所以只需要添加該系列器件庫即可ModelSim:(1)仿真軟件(2)QuartusII開發工具再仿真這一塊做的并不好,所以往往需要第三方更為專業的仿真軟件來做仿真這項工作(3)獨立的ModelSim可以和任意一家FPGA公司的開發工具進行聯調使用,也可以直接單獨使用,靈活性更高Nodepad++:編輯軟件(1)一款小而精悍的代碼編輯器visio:(1)完成工程結構框圖和模塊內部波形圖的繪制USB-Blaster:(1)下載器的驅動(2)對FPGA開發進行程序下載、固化以及工程調試時,下載器是必不可少的,USB-Blaster就是下載器的驅動5.FGPA開發流程
(1)規劃首先我們要進行設計前的規劃,即對項目要有一個全局的考慮,分析項目的具體需求來設計系統的結構、劃分系統的層次,確定各個子模塊的結構關系和信號之間的相互關系,然后確定模塊的端口信號有哪些(2)畫出波形圖根據每個模塊的功能和自己的理解并結合芯片、接口的時序手冊我們使用 Visio畫出該模塊能正常工作的時序波形圖(3)編寫代碼根據所畫的波形圖嚴格設計代碼,所謂的嚴格就是要保證設計代碼的仿真結果要和所畫的波形保持一致(4)代碼編譯代碼編寫完成后對代碼進行編譯,目的是檢查代碼中的語法錯誤。若代碼存在語法錯誤,對代碼進行修改,再次編譯,直至通過編譯(5)仿真根據 RTL 代碼設計合理的 Testbench 進行邏輯仿真(也稱為前仿真、功能仿真)(6)所畫波形圖與仿真對比使用仿真工具進行仿真(可以使用軟件自帶的仿真工具,也可以使用其他的第三方仿真工具,本教程中我們使用 ModelSim),并將仿真出來的波形和用 Visio 畫出的時序波形圖進行對比,如果對比有差別則修改代碼直至相同(7)綁定管腳,硬件驗證綁定管腳后進行分析綜合、布局布線,然后下載到硬件板卡中,此時如果硬件板卡能夠正常工作,則說明前期的設計和編寫的代碼都正確;如果硬件板卡不能夠正常工作,查找并解決問題,反復迭代直至正確實現功能,并重復后面的流程,最終保證硬件板卡能夠正常工作實際操作示例:1.模塊和端口的劃分a.由多少個模塊組成,每個模塊由多少個輸入和輸出信號組成b.輸出信號與輸出信號的特征:名稱、寬度、類型、作用2.波形圖的繪制a.輸入信號與輸出信號的關系b.輸出信號與輸出信號的這種關系是一種時序的、邏輯的關系,即有時間上的關系又有邏輯上的關系,這種關系不在是結構上的關系,對于這種時序的、邏輯的關系我們用波形圖的方式表達最為清晰直觀3.代碼的編寫a.功能代碼的編寫RTL代碼編寫的模塊叫做RTL模塊,也叫做功能模塊、可綜合模塊,之所以叫做RTL代碼是因為用Verilog HDL在Resistance Transistors Logic(寄存器傳輸邏輯)來描述硬件電路,RTL代碼能夠綜合出真實的電路以實現我們設計的功能,區別于不可綜合的仿真代碼b.代碼分析和綜合(start analysis & synthesis)該步驟的的目的是首先檢查語法是否有錯,其次是綜合器將代碼解釋為電路的形式,只有analysis & synthesis 表現位綠色說明分析與綜合完成,并沒有語法錯誤產生Netlist Viewers --> RTL Viewers:表示硬件電路結構4.仿真驗證Testbench是測試腳本,測試我們用硬件描述語音HDL設計的電路,測試設計電路的整體功能、部分性能是否與預期的目標相符,使用Testbench做仿真速度快,修改后馬上就可以看到結果,節省開發時間編寫Testbench進行測試的過程:(1)產生模擬激勵(輸入波形)(2)將產生的激勵加入到被測試模塊并觀察其輸出響應(3)將輸出響應與期望進行比較,從而判斷設計的正確性a.點擊"Toos"下的"Run Simulation Tool"下的"RTL Simulaton"打開 ModelSim 進行功能仿真(因為主要是驗證邏輯的正確性也稱邏輯仿真)b.仿真中的幾個重要概念:波形的仿真時間、仿真的開始和結束、波形的放大和縮小、參考線的添加與刪除與定位5.下載程序到實際硬件中進行驗證Device介紹:Device family:選擇使用哪個系列的芯片Package: 選擇該芯片的封裝類型pin count:管腳數量Speend grade: 速度等級Availabe device:Name: 器件具體的名字Core Voltage: 內核電壓LEs: Logic ELements的數量,邏輯單元數越多說明資源越多能夠實現更多的邏輯設計,芯片的價格也就越貴,設計邏輯代碼主要使用的是這部分資源User I/Os: 用戶可配置的 I/O 共 180 個,雖然該芯片有 256 個管腳但是有一些管腳是不可以隨意配置的,如電源管腳、固定功能的管腳,除去具有固定功能的管腳,留給用戶可任意配置的管腳只有 180 個,設計中使用比較多的內存時就可以使用這部分專用資源Memory Bits: 存儲器的容量,共 423936bit,主要是指 Block RAM(塊 RAM),423936bit 即 46個 M9K(每一塊中包含 8192 個存儲位,加上校驗位共 9216 位,故稱 M9K)Embedded Multiplier 9-bits elements: 嵌入式乘法器數目共 46 個,在進行數學運算時可以調用該部分的資源,以節省邏輯資源的開銷pll: 鎖相環的數量,一共有兩個,主要用于分頻、倍頻和時鐘相位的調制Golabal Clocks: 全局時鐘管腳,一共有 10 個,全局時鐘管腳是連接到全局時鐘樹上的,能夠保證連接到全局時鐘樹上的時鐘信號到達每個寄存器的時間都是相同的## 6.工程文件夾管理目的:把不同的設計文件放到不同的文件夾中,養成這樣的一個好習慣是為了日后能更方便管理每一個項目目錄結構:led: -> 項目名稱doc:該文件夾主要放置一些文檔資料,如數據手冊,使用 Visio 畫的波形圖、自己寫的文檔等都可以存放到這個文件夾里面quartus_prj:該文件夾主要放置的是工程文件,使用 Quartus II 新建的工程就保存到這里,如果是使用的 Xilinx 的 ISE 開發工具,就可以命名為 ise_prj,這樣能很清晰的知道是用的什么開發軟件進行開發的rtl:該文件夾主要放置可綜合的代碼,就是最后可以生成硬件電路的代碼,因為這部分代碼主要是寄存器描述的寄存器傳輸級的代碼所以文件夾取名為 rtl(register transportlevel),因為也是我們的設計文件,所以也可以取名為 designsim:該文件夾放置對可綜合代碼的仿真文件,即不可綜合的代碼,也叫 testbench,所以也可以將文件夾取名為 testbench 或者 tb 都可以。主要的文件夾就是這四個,后期的一些項目有可能還會用到 Matlab、IP 核,屆時可以再新建一個單獨管理 Matlab 文件和 IP 核文件的文件夾,文件數量可以根據自己的需求進行分類管理備注:(1)綜合:廣義的綜合就是將高層次的設計轉化為低層次的設計,比如將C語言轉換為匯編語言、機器語言,將HDL語言轉換為門級網表邏輯綜合:RTL級轉換為門級網表7.組合邏輯電路與時序邏輯電路的區別
組合邏輯電路由與、或、非門等邏輯門電路組成,其任何時刻的輸出取決于其輸入的組合 時序邏輯電路它的輸出取決于他們當前的輸入和他們之前的輸入輸出狀態,主要由存儲電路和組合邏輯電路兩部分組成 區分一個設計是組合邏輯電路還是時序邏輯電路只要是看數據工作是不是在時鐘沿下進行的,在FPGA的設計中,負責電路設計都是要用到時序邏輯電路,往往都是以時序邏輯電路為主,組合邏輯電路為輔的復雜邏輯電路總結
以上是生活随笔為你收集整理的1.FPGA基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在linux环境下测试和使用aria2c
- 下一篇: 【第6章】MySQL函数