精品国产一区在线_av无码中文字幕无码王_天海翼三点刺激高潮不停_好硬好大好爽视频_欧美高清一区三区在线专区_香蕉黄色片

【FPGA基礎(chǔ)】基于Quartus Prime 17.1 的FPGA開發(fā)流程

文章目錄

  • 概述
  • 一、建立工程
  • 二、設(shè)計輸入
  • 三、分析和綜合
  • 四、功能仿真
  • 五、綜合與布局布線
  • 六、時序仿真
  • 七、IO 分配以及生成配置文件
  • 八、配置 FPGA 下載
  • 九、固化程序到FLASH中
    • 9.1、FPGA 固件存儲方案介紹
    • 9.2、Cyclone IV E FPGA 固件燒寫方案
    • 9.3、燒寫文件 JIC 的產(chǎn)生


概述

科學(xué)合理的 FPGA 設(shè)計流程是為了更加直觀地展示一個完整的設(shè)計流程,本節(jié)以一個基礎(chǔ)的實驗——二選一選擇器,來介紹完整的 FPGA 設(shè)計開發(fā)流程。

良好的文件夾設(shè)置以及工程管理是學(xué)好 FPGA 設(shè)計的基礎(chǔ),在學(xué)習(xí)之初就應(yīng)建立良好的習(xí)慣。因此首先在新建的工程文件夾下面,分別建立如下圖所示的子文件夾。

各級目錄作用釋義如下:

  • prj 為工程文件存放目錄
    • prj 文件夾下還建立了子文件夾 ip,用于存放 Quartus Prime 中生成的 IP 核文件
  • rtl 為 verilog 可綜合代碼存放目錄
  • testbench 為測試文件存放目錄
  • img 為設(shè)計相關(guān)圖片存放目錄
  • doc 為設(shè)計相關(guān)文檔存放目錄

一、建立工程

每個開發(fā)過程開始時都應(yīng)建立一個 Quartus Prime 工程, Quartus II 以工程的方式對設(shè)計過程進行管理, Quartus II 工程包括創(chuàng)建 FPGA 配置文件需要的所有設(shè)置和設(shè)計文件。

打開安裝好的 Quartus Prime 17.1 軟件,軟件啟動界面及啟動后的主界面如下圖所示:

STEP #1

第一步, 單擊 New Project Wizard 來啟動一個工程向?qū)А?會顯示如下圖所示的工程向?qū)Ы榻B,此處直接單擊 Next 即可。

STEP #2

第二步,選擇新建工程所在路徑、設(shè)置工程命名以及頂層設(shè)計實體名稱。在輸入頂層設(shè)計實體時默認與工程名稱一致,此處可根據(jù)具體情況來自行修改,這里我就直接使用默認設(shè)置了,如下圖所示。

選擇工程類型時可以選擇一個全空的工程,也可以基于現(xiàn)有的工程模版來實現(xiàn)。此處選擇新建一個空的工程,如下圖所示。

STEP #3

第三步,添加已有設(shè)計文件。如沒有, 可直接點擊 Next,本次單擊 Next, 如下圖所示。

STEP #4

第四步,選擇器件。在這里選擇 Cyclone IV E 系列的 EP4CE10F17C8 ,如下圖所示。 這里可在右面紅色框內(nèi)可通過添加限定條件來減少需要翻看器件的目錄。

?

小梅哥的AC501使用的是:Cyclone V 系列的 5CSEBA2U19I7

?

STEP #5

第五步, EDA 工具的選擇。從上至下依次是綜合工具、仿真工具以及板級工具, 可根據(jù)實際情況自行選擇。在這里根據(jù)自己安裝情況將仿真工具設(shè)置為 Modelsim-Altera,語言選擇 Verilog HDL,其他選項可暫時不做處理, 如下圖所示。

?

后期需要設(shè)置或更改 EDA 工具相關(guān)路徑時, 依次點擊[Tools] -> [Options] -> [General] -> [EDA Tool Options] -> ModelSim-Altera

?

STEP #6

第六步,出現(xiàn)設(shè)置信息概覽頁面,直接單擊 Finish 完成工程的建立。

二、設(shè)計輸入

工程建立完成后,需要為工程添加新的設(shè)計文件,單擊 [File] -> [New] -> Verilog HDL File,或者工具欄中的 New,彈出如下圖所示的選擇框,此處選擇 Design Files 中的 Verilog HDL File,然后點擊OK。

新的文件建立完成后,輸入下述二選一多路器代碼,并以 led.v 命名保存到工程對應(yīng)的 rtl 文件夾下。

module led(a,b,key_in,led_out); input a;//輸入端口 A input b;//輸入端口 B input key_in; //按鍵輸入,實現(xiàn)輸入通道的選擇 output led_out; //led 控制端口 默認是wire類型 //當 key_in == 0 : led_out = a assign led_out = (key_in == 0)? a : b;endmodule

簡單解釋代碼,當 key_in 為低時,輸出 led_out 和 a 相同,否之 led_out 和 b 相同。

?

默認勾選Add file to current project

?

三、分析和綜合

單擊工具欄中的 Start Analysis & Synthesis 來進行分析和綜合, 如下圖所示。如在設(shè)計過程有錯誤的地方,在分析和綜合后會提示 Error 或者 Warning,需針對不同情況進行修改。

?

常見的問題以及解決方式,可參見 www.corecourse.cn 網(wǎng)站上相關(guān)文章針對性解決。

?

Quartus的右下角會顯示進度和所用時間,如下圖所示。

分析和綜合沒有問題后,依次點擊[Tools] -> [Netlist Viewers] -> RTL Viewer,可以看到如下圖所示的硬件邏輯電路,即一個二選一選擇器,符合設(shè)計預(yù)期。

四、功能仿真

STEP #1 編寫測試激勵文件

為了驗證以上邏輯設(shè)計是否成功, 在直接下載到開發(fā)板觀察現(xiàn)象之前需要進行功能仿真(又稱為行為級仿真或者前仿真),功能仿真首先需要編寫激勵文件,此處再新建一個 led_tb.v 文件并輸入如下代碼,保存到工程對應(yīng)的 testbench 文件夾下, 并再次進行分析和綜合查看是否存在語法設(shè)計錯誤。

`timescale 1ns/1psmodule led_tb; //激勵信號定義,對應(yīng)連接到待測試模塊的輸入端口 reg signal_a; reg signal_b; reg signal_c;  //待檢測信號定義,對應(yīng)連接到待測試模塊的輸出端口 wire led;  //例化待測試模塊 led led0(  .a(signal_a),  .b(signal_b),  .key_in(signal_c),  .led_out(led) );  //產(chǎn)生激勵 initial begin  signal_a = 0;signal_b = 0;signal_c = 0;  #100;//延時 100ns  signal_a = 0;signal_b = 0;signal_c = 1;  #100;  signal_a = 0;signal_b = 1;signal_c = 0;  #100;  signal_a = 0;signal_b = 1;signal_c = 1;  #100;  signal_a = 1;signal_b = 0;signal_c = 0;  #100;  signal_a = 1;signal_b = 0;signal_c = 1;  #100;  signal_a = 1;signal_b = 1;signal_c = 0;  #100;  signal_a = 1;signal_b = 1;signal_c = 1;  #200;  $stop; endendmodule

簡單解釋下程序,timescale 指定程序的延時單位和精度。#200 的意思就是延時200ns,#200.123的意思就是延時200.123ns,即演示精度最多為ps級別,200123ps。提醒一點,需要注意下例化的對應(yīng)關(guān)系。

STEP #2 設(shè)置仿真腳本

單擊標題欄的 [Assignments] -> [Settings] -> Simulation查看仿真工具以及語言是否與之前的設(shè)置一致, 否則根據(jù)實際使用情況進行相應(yīng)的修改,如下圖所示。

選中上述界面下方的 Compile test bench 選項,然后單擊其后的 Test Benches,可以看到如下圖所示界面。

點擊 New, 彈出如下圖所示的 Test Bench 設(shè)置文件對話框,在 Test bench name 中填寫對應(yīng)的激勵名稱led_tbTop level module in test bench會自動設(shè)置與其一樣),接著找到已經(jīng)編寫好的激勵文件,單擊 Add,最后點擊 OK 后回到主界面。

?

手動設(shè)置仿真時間為10us,方式如下圖所示:

?

STEP #3 啟動仿真

單擊 [Tools] -> [Run Simulation Tool] -> RTL Simulation 來進行前仿真也就是常說的功能仿真,如下圖所示。

?

[Tools] -> [Options] -> EDA ToolOptions 可以設(shè)置對應(yīng)的仿真軟件的路徑

?

STEP #4 仿真結(jié)果分析

至此, 即可在仿真軟件 modelsim 中看到如下圖所示的波形文件,可以看出符合設(shè)計預(yù)期, 當 key_in 等于 0 時 led_out 等于 a,當 key_in 等于 1 時 led_out 等于 b,即功能仿真通過。

五、綜合與布局布線

點擊 Quartus Prime 主界面的 Start Compilation,進行綜合&布局布線, 如下圖所示。布局布線過程中如遇出錯, 應(yīng)根據(jù)編譯錯誤信息具體修改。

六、時序仿真

?

時序仿真又稱為后仿真,后仿真之前需要把已打開的Modelsim關(guān)閉!

?

點擊 [Tools] -> [Run Simulation Tool] -> Gate Leval Simulation 或者在工具欄點擊 Gate LevalSimulation 進行后仿真, 也就是門級仿真,如下圖所示。

彈出選擇時序模型對話框,可針對相應(yīng)情況具體選擇。此時可選擇第一個時序模型: 慢速工作、環(huán)境溫度為 85℃、 內(nèi)核供電 1.2V 的情況進行仿真, 如下圖所示。

時序仿真完成后, 可以在 Modelsim 的波形窗口中看到圖 2.2-23 的時序仿真波形。從波形中發(fā)現(xiàn)與之前的功能仿真相比有了一些差異,如: 存在不希望存在的脈沖、 且在 200ns 時,led 相對輸入信號有一定時間的邏輯延時

七、IO 分配以及生成配置文件

IO 分配其方法不唯一,常用的有三種。 在標題欄中 Assignments—Pin Planner 或者直接單擊工具欄的 Pin Planner 進行 IO 分配, 如下所示。同時也可通過編寫 Tcl 文件的方式來實現(xiàn)引腳分配,此處需針對不同板卡進行不同的設(shè)置。

以芯路恒 AC620 開發(fā)板為例, 最終的引腳分配如下圖所示:

此處需注意, 在分配好引腳后,仍需再進行一次全編譯才能使引腳分配生效

八、配置 FPGA 下載

單擊工具欄中的 Programmer, 如下圖所示,彈出以下對話框。確認連接好下載器并在 Hardware Setup 中選中 USB-Blaster 以及被下載的.sof 文件后, 單擊 Start 即可將設(shè)計好的邏輯電路下載到開發(fā)板中。

?

sof文件是下載到FPGA,掉電即丟失;jic文件是固化到FLASH中,掉電仍存在!

?

通過按鍵以及兩根杜邦線控制 P2 插接件下方的 GPIO0 (R1)以及 GPIO1(P2)接入不同的電平值, 可以觀測到 led 燈(LED0)具有不同的亮滅效果。

九、固化程序到FLASH中

9.1、FPGA 固件存儲方案介紹

Intel 或 Xilinx 的 FPGA 芯片,使用的是基于 SRAM 結(jié)構(gòu)的查找表,而 SRAM 的一大特性就是掉電數(shù)據(jù)會丟失,當使用 JTAG 將 SRAM 配置文件(.sof)配置到 FPGA 芯片中后,這些數(shù)據(jù)是直接存儲在 SRAM 結(jié)構(gòu)的查找表中的,因此,一旦芯片掉電,則 SRAM 中的數(shù)據(jù)將丟失,再次上電后, SRAM 中將不再有有效的數(shù)據(jù)。 而普通的 MCU 內(nèi)部集成了片上程序存儲器 ROM,即使掉電后也能保存程序。 這也就是常見的,使用 JTAG 下載 SOF 固件到FPGA 中后,板子重新上電,則之前下載的固件又不在了的原因。

當系統(tǒng)設(shè)計完成并驗證結(jié)束后, 準備量產(chǎn)時,希望 FPGA 能夠永久保持電路固件,即讓FPGA 上電后其查找表中就被寫入有效的數(shù)據(jù)。但是又不能總是每次系統(tǒng)上電后就用 JTAG去下載一次程序固件。因此, FPGA 支持另外一種配置方式:主動串行配置(AS)。

所謂主動串行配置,就是在 FPGA 芯片外部放置一片能夠掉電數(shù)據(jù)不丟失的存儲器,例如最常見的 EPCS、 QFLASH、并口 FLASH,來存儲設(shè)計好的電路固件。而 FPGA 芯片內(nèi)部,則設(shè)計了一個專用的硬件電路,在芯片剛上電時就主動去讀取存儲器中的固件,并配置到FPGA 芯片的每一個 SRAM 中去。通過這樣一種方式,可在不改變 FPGA 芯片 SRAM 工藝的查找表結(jié)構(gòu)前提下, 使得芯片每次上電后,都能獲得有效的配置數(shù)據(jù)。外部存儲電路配置信息的芯片稱之為配置芯片

早前, 原 Altera 公司規(guī)定只能使用其自己發(fā)售的 EPCS 芯片作為外部配置器件,該 EPCS 芯片實質(zhì)就是一個 SPI 接口的串行 FLASH 芯片, 只不過是經(jīng)過了 Altera 的嚴格測試,性能優(yōu)異。而近些年,隨著芯片生產(chǎn)工藝的不斷發(fā)展,很多其他廠家生產(chǎn)的 SPI 接口的 FLASH 芯片也能夠達到 EPCS 的技術(shù)標準,因此 Altera 就放開了該限制,并指出可以使用其他芯片廠家生產(chǎn)的 SPI 接口的 FLASH 芯片代替 EPCS。在芯路恒的 AC620上就使用了一片華邦公司生產(chǎn)的 16Mbit 的串行 FLASH 芯片 W25Q16 來作為配置芯片。該芯片性能優(yōu)異,性價比較高,完全能夠達到 EPCS 的性能標準。

9.2、Cyclone IV E FPGA 固件燒寫方案

當需要將設(shè)計好的配置固件固化到該器件中時,有兩種方式。

  • 第一種方式,也就是傳統(tǒng)的方式,是使用專用 AS 接口(與 JTAG 10 針接口獨立)來直接燒寫該配置芯片,該種方式需要在電路板上設(shè)置一個獨立的 AS 接口,占用 PCB 板面積較大,使用起來不方便。
  • 第二種方式,也是現(xiàn)在流行的方式則是通過 JTAG 接口,經(jīng) FPGA 芯片間接燒寫配置芯片,其電路如下圖所示。 AC620 開發(fā)板沒有設(shè)計獨立的 AS 接口,因此只支持第二種燒寫方式。

9.3、燒寫文件 JIC 的產(chǎn)生

STEP #1

打開希望固化的 FPGA 設(shè)計工程, 此處以本節(jié)的工程為例。

STEP #2

在 Quartus Prime 軟件中點擊 File—>Convert Programming Files,如下圖所示:

STEP #3

在彈出的窗口中, Programming file type 選擇 JTAG Indirect Configuration File(.jic), Mode選擇 Active Serial, Configuration device 選擇 EPCS16, File name 默認是 output_file.jic,這里,我們養(yǎng)成良好的習(xí)慣,將其改成工程名字: led_test.jic, 如圖 2.3-3 所示。

STEP #4

在 Input files to convert 一欄中,點擊 Flash Loader 一項,在右側(cè)點擊 Add Device 選項,如下圖所示:

STEP #5

在上一步彈出的選項卡中,選擇 Cyclone IV E 下的 EP4CE10(AC620 開發(fā)板上的芯片為 EP4CE10F17C8,可根據(jù)實際情況進行選擇),然后點擊 OK,如下圖所示:

STEP #6

點擊 OK 后會回到先前的配置頁面,此時鼠標再次點擊 SOF Data,再點擊右側(cè)的 AddFile,如下圖所示:

STEP #7

在彈出的窗口中,在工程生成的output files文件夾下找到“key_filter.sof”文件,點擊Open,即可添加進來,如下圖所示:

STEP #8

點擊 Open 后,回到配置頁面,點擊 Generate 按鈕,如下圖所示:

STEP #9

點擊 Generate 按鈕后,軟件開始轉(zhuǎn)換文件,轉(zhuǎn)換成功后彈出成功提示窗口,如下圖所示:

STEP #10

點擊 OK 即可,然后 close 窗口。

STEP #11

打開 Quartus Pime 中的下載工具 Programmer,將原有的 sof 文件移除, 點擊 Add Files重新添加 Output Files 文件夾下的 led_test.jic 文件進來,勾選 Programming/Configuration,如下圖所示:

STEP #12

設(shè)置完成后,點擊 Start(確保此時下載器與開發(fā)板已經(jīng)正確連接),則軟件開始燒錄固件,整個燒錄時間大約花費 20 秒鐘左右。

燒錄完成后,此時固件已經(jīng)保存在了配置芯片中,但是此刻 FPGA 還不能運行該固件,因為當前的固件是存儲在配置芯片中的,并沒有被配置到 FPGA 中,因此需要讓 FPGA 主動執(zhí)行一次從配置芯片中配置固件的過程,方法很簡單, 只需開發(fā)板斷電后重新上電即可

此時, 使用杜邦線分別接觸不同的電平值,就可以看到 LED 的狀態(tài)發(fā)生變化。斷電再上電,固件依舊保持,整個程序固化工作完成。

聲明:本內(nèi)容為作者獨立觀點,不代表電子星球立場。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯的朋友,別忘了一鍵三連哦!
贊 31
收藏 32
關(guān)注 432
成為作者 賺取收益
全部留言
0/200
  • dy-i2UfRuvP 2021-05-19 13:16
    請教一下
    回復(fù)
  • dy-iipPZRPN 2021-05-13 22:38
    佩服樓主
    回復(fù)
  • dy-3EbVR6Ei 2021-05-13 22:27
    期待繼續(xù)
    回復(fù)
  • dy-Xq2JxpfN 2021-05-13 22:12
    感謝分享
    回復(fù)
  • dy-9g42stbW 2021-05-13 21:54
    圍觀學(xué)習(xí)
    回復(fù)
  • dy-mLj7kl5v 2021-05-13 20:30
    學(xué)習(xí)了
    回復(fù)
  • dy-apcih3c1 2021-05-13 20:11
    不亞于看了一篇高質(zhì)量論文
    回復(fù)
  • dy-k78ZHtFD 2021-05-13 20:01
    精彩,很多東西還沒接觸到
    回復(fù)
  • dy-nAWdnPGS 2021-05-13 18:49
    比論文強一萬倍
    回復(fù)
  • dy-prSX6RBY 2021-05-13 18:38
    請教一下
    回復(fù)
  • dy-jqGVYqsF 2021-05-13 16:03
    佩服樓主
    回復(fù)
  • dy-VIQ9auhf 2021-05-13 14:53
    期待繼續(xù)
    回復(fù)
  • dy-7mura2gg 2021-05-13 14:44
    什么時候更新
    回復(fù)
  • dy-YN3DYTeH 2021-05-13 14:33
    思路清晰,受益匪淺
    回復(fù)
  • dy-9hjGevyn 2021-05-13 13:32
    期待繼續(xù)
    回復(fù)
  • dy-H1WY5jXH 2021-05-13 13:13
    講的真好!
    回復(fù)
  • dy-wVQjSHHX 2021-05-13 12:58
    佩服樓主
    回復(fù)
  • dy-9hjGevyn 2021-05-12 15:58
    期待繼續(xù)
    回復(fù)
  • dy-88VlYaFf 2021-05-12 15:34
    學(xué)習(xí)了
    回復(fù)
  • dy-9QTV6UZW 2021-05-12 15:23
    圍觀學(xué)習(xí)
    回復(fù)
主站蜘蛛池模板: 一二三四五社区在线高清观看 | 国产成人无码a区精油按摩 91免费版在线 | 野花社区www官网在线观看 | 日本高清免费在线观看 | 成人一道本在线 | 免费a级毛片免费体验区 | FREE性中国熟女HD | 日日操让人人看 | 在线不卡中文字幕一区 | 天天插日日射 | 亚洲中文字幕无码一区 | 三年片大全在线观看动漫 | 春水堂av导航| free性护士vidos国产 | 47pao国产成永久免费视频 | 东京热亚洲精品中文一区 | 边摸边吃奶边做爽动态 | 亚洲色欲在线播放一区二区三区 | 美女主播在线观看 | 免费在线观看黄片毛片a | 少妇人妻AV无码专区 | 亚洲红杏 | 色樱桃影院亚洲精品影院 | 1000部又爽又黄无遮挡的视频 | 人妻少妇HEYZO无码专区 | 艳妇乳肉潘金莲3 | 国产精品免费久久久 | 国产欧美日韩精品一区二区图片 | 亚洲小说在线图片色 | 哥哥在线观看 | 国产超碰人人 | 欧美aaaa大片 | 伊人网影院 | 国产片自拍 | 久久精品网站免费观看 | 老师穿旗袍白丝让我爽翻天AV | 国产一级一国产一级毛片 | 亚洲国产成人久久精品大牛影视 | tube日本free| 9久久婷婷国产综合精品性色 | 久久久亚洲精华液精华液精华液 |