版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> EDA實(shí)驗(yàn)技術(shù)文檔</b></p><p> 含異步清0和同步時(shí)鐘使能的4位加法計(jì)數(shù)器</p><p><b> 實(shí)驗(yàn)內(nèi)容與實(shí)驗(yàn)原理</b></p><p> 利用Quartus II建立一個(gè)含計(jì)數(shù)使能、異步復(fù)位的4位加法計(jì)數(shù)器,并進(jìn)行仿真測(cè)試和硬件測(cè)試。</p><
2、p> 由實(shí)驗(yàn)開(kāi)發(fā)板上數(shù)字信號(hào)源Clock0提供一個(gè)輸入為4Hz的時(shí)鐘輸入信號(hào)clk,由開(kāi)發(fā)板上撥擋開(kāi)關(guān)SW1控制計(jì)數(shù)使能端ena并由LED1指示,由核心板上SYS_RST按鍵控制復(fù)位端rst并由LED2指示,進(jìn)位輸出由LED3指示,計(jì)數(shù)值由數(shù)碼管顯示。</p><p><b> 實(shí)驗(yàn)步驟</b></p><p> 1、使用Quartus II建立空白工程,
3、然后命名為cnt_4b.qbf</p><p> 雙擊打開(kāi)桌面上的Altera公司提供的Quartus II7.0(32-Bit)圖標(biāo),顯示如下軟件界面;</p><p> 選擇菜單欄中File>>New Project Wizard來(lái)新建工程,點(diǎn)擊后彈出新建工程向?qū)?duì)話框如下</p><p> 分別提示完成五項(xiàng)工作1)項(xiàng)目名稱與保存路徑2)頂層設(shè)
4、計(jì)實(shí)體名稱3)加入已有文件和相關(guān)庫(kù)4)指定目標(biāo)Altera器件封裝和型號(hào)5)設(shè)置項(xiàng)目的其他EDA工具</p><p> 單擊Next進(jìn)入如下圖所示界面,并按圖新建工程路徑、名稱、頂層實(shí)體</p><p> 在這里,工程名與頂層文件的實(shí)體名同名為cnt_4,文件夾所在路徑名和文件夾名中不能用中文,不能用空格,不能用括號(hào)(),可以用下劃線_或英文字母或數(shù)字,但最好也不要以數(shù)字開(kāi)頭。<
5、/p><p> 單擊Next進(jìn)入如下圖所示界面,這里是添加已有相關(guān)工程文件,這里我們是建立空白工程,所以不需要添加任何文件</p><p> 單擊Next進(jìn)入如下圖所示界面,這一步是對(duì)所用實(shí)驗(yàn)核心板中FPGA器件進(jìn)行設(shè)置,以確保代碼順利編譯和下載。MagicSOPC實(shí)驗(yàn)箱上的FPGA標(biāo)配為:Altera公司CycloneII系列的EP2C35F672。設(shè)置相關(guān)參數(shù)如圖所示。</p&g
6、t;<p> 設(shè)置完成后,單擊Next, 進(jìn)入如下圖所示界面,這里不需要設(shè)置其他EDA工具</p><p> 再單擊Next,出現(xiàn)如下圖所示的工程信息報(bào)告對(duì)話框,提示設(shè)計(jì)者看到工程文件配置信息報(bào)告。最后,單擊Finish,完成新建工程的建立。</p><p> 2、建立文本編程文件</p><p> 1)新建Verilog HDL源程序文件cn
7、t4b.v,輸入程序代碼并保存,(完整的程序參考清單見(jiàn)附錄),進(jìn)行綜合編譯。</p><p> 在第1步,已經(jīng)創(chuàng)建好的設(shè)計(jì)工程后,在菜單欄中File>>New打開(kāi)新建文本對(duì)話框如下圖所示,在新建對(duì)話框中選擇Verilog HDL File,按OK就可建立一個(gè)空的Verilog HDL文件,缺省名為Verilog1.v。</p><p> 再選擇菜單命令中File>&g
8、t;Save As 改名為cnt4b.v,點(diǎn)擊保存!</p><p> 這里切莫將文件名默認(rèn)為cnt_4b,根據(jù)筆者的經(jīng)驗(yàn)這將造成后續(xù)建立的相對(duì)應(yīng)的模塊符號(hào)無(wú)法正常添加到頂層實(shí)體的圖形設(shè)計(jì)文件中去。</p><p> 在cnt4b.v空白Verilog HDL程序文件中輸入設(shè)計(jì)計(jì)數(shù)程序模塊,輸入無(wú)誤后點(diǎn)擊圖標(biāo)加以保存。詳細(xì)程序文件和說(shuō)明見(jiàn)附錄1!</p><p>
9、; 這里要注意保證程序的模塊名應(yīng)和文件名一致!</p><p> 對(duì)上述的Verilog HDL文件進(jìn)行編譯處理,具體操作如下:</p><p> 如圖所示,在工程向?qū)诖翱谥械腇ile標(biāo)簽中的Led.v文件單擊鼠標(biāo)右鍵,在彈出的菜單中單擊Set at Top-level-Entity選項(xiàng)。將cnt4b.v文件設(shè)置為頂層實(shí)體。這一步很重要,不設(shè)置無(wú)法進(jìn)行b步驟的編譯與綜合</p
10、><p> 選擇菜單欄中Processing>>Start>>Start Analysis&Synthesis進(jìn)行綜合編譯,也可以選擇工具欄上的按鈕啟動(dòng)編譯</p><p> 若在編譯過(guò)程中發(fā)現(xiàn)錯(cuò)誤,則找出并更正錯(cuò)誤,直至編譯成功為止。若編譯成功會(huì)出現(xiàn)如下圖形:</p><p> 2)再新建Verilog HDL源程序文件decl7
11、s.v,輸入程序代碼并保存,(完整的程序參考清單見(jiàn)附錄),進(jìn)行綜合編譯。</p><p> 相應(yīng)新建保存以及綜合編譯的步驟請(qǐng)參照1)新建cnt4b.v</p><p> 新建文件名decl7s.v的空白Verilog HDL文件</p><p> 在decl7s.v空白Verilog HDL程序文件中輸入顯示計(jì)數(shù)程序模塊,輸入無(wú)誤后點(diǎn)擊圖標(biāo)加以保存。詳細(xì)程序文
12、件和說(shuō)明見(jiàn)附錄2!</p><p> 對(duì)decl7s.v文件進(jìn)行Verilog HDL文件進(jìn)行編譯處理,這里同樣別忘了將文件設(shè)置為頂層實(shí)體文件</p><p> 至此,我們已經(jīng)建立了實(shí)驗(yàn)所需要的加法計(jì)數(shù)模塊和數(shù)碼管靜態(tài)顯示模塊!下面我們要做到就是將文本模塊程序進(jìn)行“封裝”!</p><p> 3、從設(shè)計(jì)文件創(chuàng)建模塊</p><p>
13、如下圖所示,在工程向?qū)Ю锩娴腇iles標(biāo)簽中的cnt4b.v文件單擊鼠標(biāo)右鍵,在彈出的菜單中單擊Create Symbol Files for Current File選項(xiàng)。之后會(huì)彈出一對(duì)話框提示原理圖文件創(chuàng)建成功,點(diǎn)“確定”按鈕即可創(chuàng)建一個(gè)代表現(xiàn)行一個(gè)代表現(xiàn)行文件功能的符號(hào)文件(cnt4b.bsf)。</p><p> 同理,用同樣的操作步驟,可以輕松的創(chuàng)建對(duì)decl7s.v代表的decl7s.bsf符號(hào)文件
14、</p><p><b> 4、波形仿真驗(yàn)證</b></p><p> 這里我們將詳細(xì)介紹在第3部分建立的cnt4b.v計(jì)數(shù)模塊加以波形仿真驗(yàn)證(前仿真)</p><p> 選擇在工程向?qū)Ю锩娴腇iles標(biāo)簽中的cnt4b.v文件,將其設(shè)回頂層實(shí)體文件,然后在進(jìn)行一次綜合編譯(筆者認(rèn)為,是為了能在后續(xù)的Node Finder對(duì)話框找到所需
15、的引腳,而不是其他模塊的引腳,這一點(diǎn)請(qǐng)格外注意?。?lt;/p><p> 選擇菜單欄中File>>New命令,打開(kāi)新建文件對(duì)話框,如下圖所示:選擇Other Files標(biāo)簽頁(yè)從中選擇Vector Waveform File(矢量波形文件),按OK建立空的波形編輯窗口,缺省值為Waveform1.vwf.選擇File>>Save As改名為cnt_4b.vwf并保存。</p>&
16、lt;p> 在如下圖所示的Name標(biāo)簽區(qū)域內(nèi)雙擊鼠標(biāo)左鍵,彈出添加節(jié)點(diǎn)對(duì)話框</p><p> 在上圖中Insert Node or Bus對(duì)話框中單擊Node Finder 按鈕,彈出如下對(duì)話框,這里要進(jìn)行三步設(shè)置</p><p> Filter>>Pins:all 按List按鈕</p><p><b> 按>>
17、添加所有節(jié)點(diǎn)</b></p><p> 按OK按鈕,這樣就會(huì)彈出一個(gè)未經(jīng)設(shè)置過(guò)的波形圖</p><p> 選擇Edit>>End Time命令,彈出結(jié)束時(shí)間對(duì)話框,在Time框中輸入仿真結(jié)束時(shí)間,這里我們采用默認(rèn)設(shè)置(1us)</p><p><b> 編輯輸入節(jié)點(diǎn)波形。</b></p><p&
18、gt; 筆者認(rèn)為這一步是體現(xiàn)實(shí)驗(yàn)者對(duì)實(shí)驗(yàn)對(duì)象計(jì)數(shù)模塊理解的情況下,根據(jù)自己仿真意圖,去建立輸入節(jié)點(diǎn)的波形,然后通過(guò)功能仿真觀察輸出波形,比對(duì)結(jié)果。</p><p> 如何建立輸入節(jié)點(diǎn)波形?</p><p> 在這里需要使用到上圖最左側(cè)的波形編輯器工具條,具體各個(gè)標(biāo)簽請(qǐng)?jiān)敿?xì)參照EDA實(shí)驗(yàn)與實(shí)踐教程(二)P84</p><p><b> clk輸入:&
19、lt;/b></p><p> 點(diǎn)擊Name欄中的clk輸入,這樣會(huì)是其高亮度顯示</p><p> 點(diǎn)擊波形編輯器工具條中(時(shí)鐘),彈出如右圖的時(shí)鐘設(shè)置窗口,這里筆者采用默認(rèn)值</p><p><b> 點(diǎn)擊OK</b></p><p> ena輸入和rst輸入</p><p>
20、 分別點(diǎn)擊Name欄中的相應(yīng)輸入,在波形圖中,使用工具(或者其他功能工具標(biāo)簽)在合適位置進(jìn)行靈活設(shè)置,具體圖形請(qǐng)參照上圖。</p><p> 選擇Processing>>Simulator Tool命令,彈出如下窗口,按下圖進(jìn)行選擇設(shè)置</p><p><b> 具體步驟如下</b></p><p><b> 1)選
21、擇</b></p><p><b> 2)選擇仿真文件</b></p><p> 3)點(diǎn)擊,若產(chǎn)生功能仿真網(wǎng)表成功,提示如下信息</p><p><b> 4)選擇上</b></p><p> 5)按開(kāi)始仿真,若通過(guò),提示下圖信息:</p><p> 6
22、)按此按鈕打開(kāi)仿真后的波形文件,仿真后得到的波形文件如下圖所示:</p><p> 驗(yàn)證仿真結(jié)果是否與設(shè)計(jì)相符合,如果不符合,需要重新設(shè)計(jì)文件,再進(jìn)行綜合編譯、仿真。指導(dǎo)仿真結(jié)果與設(shè)計(jì)相符合為止</p><p> 5、建立頂層實(shí)體文件------圖形設(shè)計(jì)文件</p><p> 如圖所示,選擇菜單欄中File>>New打開(kāi)新建對(duì)話框,在新建對(duì)話框中選
23、擇Block Diagram/Schematic File,按OK就可建立一個(gè)空的圖形設(shè)計(jì)文件,缺省名為Block1.bdf。</p><p> 如圖所示,選擇菜單欄中File>>Save As打開(kāi)將BDF文件存盤(pán)的對(duì)話框,</p><p> 在這里,一定要接受默認(rèn)的文件名(與頂層實(shí)體名一定要相同),并默認(rèn)Add file to current projext選項(xiàng)選中,以使
24、該文件添加到工程中去。</p><p> 至此,完成了頂層模塊的建立,下面將Verilog HDL文件生成的模塊符號(hào)文件加入到頂層模塊中去!</p><p> 6. 建立4位加法計(jì)數(shù)器頂層模塊原理圖</p><p> 添加cnt4b.bsf模塊到Quartus II頂層模塊</p><p> 在工程向?qū)诖翱谥械腇ile標(biāo)簽中的cnt
25、_4b.bdf文件單擊鼠標(biāo)右鍵,在彈出的菜單中單擊Set at Top-level-Entity選項(xiàng)。將cnt_4b.bdf文件設(shè)置為頂層實(shí)體。</p><p> 在cnt_4b.bdf右側(cè)空白窗口中,任意處雙擊,彈出添加符號(hào)(symbol)的對(duì)話框,如下圖所示:</p><p> c.單擊OK,Symbol對(duì)話框被關(guān)閉,cnt_4bf符號(hào)被附在鼠標(biāo)的指針上,在cnt_4b.bdf的窗
26、口中的適當(dāng)位置,放下該符號(hào)</p><p> d.選擇File>>Save來(lái)保存QuartusII頂層文件cnt_4b.bdf</p><p> 添加decl7s.bsf模塊到Quartus II頂層模塊</p><p> 添加方法請(qǐng)參照cnt4b.bsf模塊添加方法b,c,d步驟,所不同的就是選擇的模塊是decl7s.bsf,放在合適的位置上。&
27、lt;/p><p> 添加引腳和其他基本單元,組成完整的頂層模塊圖</p><p> 如上圖所示,在空白設(shè)計(jì)欄最左側(cè)豎向排列著若干圖標(biāo),即所謂的模塊編輯工具欄,具體內(nèi)容詳見(jiàn)EDA實(shí)驗(yàn)與實(shí)踐教程(二)P58</p><p> 我們這里就是使用若干模塊編輯工具欄中按鈕,完成頂層模塊設(shè)計(jì)!具體操作步驟如下:</p><p> 單擊模塊編輯工具欄
28、中按鈕,插入符號(hào)對(duì)話框如下圖所示,這里默認(rèn)選擇了Repeat-insert mode,如此便可以重復(fù)插入相同功能的引腳。</p><p> 在Name欄目中直接輸入input,單擊OK按鈕</p><p> 連續(xù)插入三個(gè)輸入引腳,由于只需要三個(gè)輸入引腳,故浮動(dòng)出現(xiàn)第四個(gè)引腳右鍵單擊出現(xiàn)選擇菜單,點(diǎn)擊Cancel即可取消,如下圖所示</p><p> d.同樣的
29、方法可以添加5個(gè)輸出引腳(Name欄目中輸入output)、2個(gè)非門(mén)(Name欄目中輸入not)、1個(gè)數(shù)字地(Name欄目中輸入gnd)。拖動(dòng)引腳符號(hào),按下圖進(jìn)行相應(yīng)正確放置</p><p> 在正確放置后,需要用到模塊編輯工具欄中按鈕(畫(huà)線)和按鈕(畫(huà)總線),需要正確使用兩種工具,切莫搞混亂用,否則在編譯的時(shí)候會(huì)報(bào)錯(cuò),尤其是需要注意在數(shù)碼管位碼dig[7..0]由于是8位輸出引腳線,所以需要用總線連接而不能用
30、單線!</p><p> 雙擊各個(gè)引腳符號(hào),進(jìn)行相應(yīng)引腳命名</p><p> 選擇菜單欄中File>>Save保存BDF文件</p><p> g. 單擊快捷菜單欄中(或者按CTRL+L),開(kāi)始編譯!這一步的目的筆者認(rèn)為主要基于兩點(diǎn)1)檢查上述設(shè)計(jì)的cnt_4b.bdf文件2)方便后續(xù)分配FPGA引腳時(shí)會(huì)自動(dòng)出現(xiàn)所需信號(hào)名,而不需要自己輸入&l
31、t;/p><p> 7. 選擇目標(biāo)器件并對(duì)相應(yīng)的引腳進(jìn)行鎖定</p><p> 在這里選擇的器件為Altera公司Cyclone II系列的EP2C35F672C8芯片,具體操作在</p><p> 單擊菜單欄中Assignments>>Device,如下圖所示。進(jìn)行如下操作:</p><p> Family>>C
32、yclone II</p><p> Package>>FBGA</p><p> Pin count>>672</p><p> Speed grade>>8</p><p> Available device>> EP2C35F672C8項(xiàng)</p><p>
33、 注意:這里其實(shí)已經(jīng)在一開(kāi)始建立空白工程的時(shí)候完成,所以只需要進(jìn)行再次的確認(rèn)和修改</p><p> 在上圖點(diǎn)擊 Device&Pin Options,打開(kāi)Device&Pin Options對(duì)話框。在對(duì)話框中選擇Configuration標(biāo)簽頁(yè)按下圖進(jìn)行設(shè)置,即采用串行配置器件EPCS16的主動(dòng)配置方式。</p><p> 在對(duì)話框中選擇Unused Pins標(biāo)簽頁(yè)按
34、下圖進(jìn)行沒(méi)有使用引腳的設(shè)置,按照下圖設(shè)置將未使用引腳設(shè)置為高阻輸入,這樣上電后FPGA的所有不使用引腳后進(jìn)入高阻抗?fàn)顟B(tài)。</p><p> 筆者認(rèn)為:這一步是相當(dāng)關(guān)鍵,它可以避免多外設(shè)連接時(shí)造成的總線沖突,不至于造成讀數(shù)據(jù)錯(cuò)誤,甚至更嚴(yán)重的長(zhǎng)時(shí)間的器件過(guò)熱而燒毀,所以一定要將未定義的管腳設(shè)置為AS input tri-stated(三態(tài)輸入)方式</p><p> 點(diǎn)擊確認(rèn)和OK即可退
35、出選擇器件設(shè)置完成</p><p> 本實(shí)驗(yàn)中各引腳的命名以及與目標(biāo)FPGA器件引腳號(hào)的關(guān)系如下表,我們就根據(jù)自己核心板選擇相應(yīng)的引腳進(jìn)行分配。</p><p> MagicSOPC部分引腳索引表</p><p> 注意:ena信號(hào)是撥擋開(kāi)關(guān)的輸入,I/O Bank 工作電壓是2.5V,所以在I/O電平也應(yīng)設(shè)置為2.5。</p><p>
36、; 單擊菜單欄中Assignments>>Pin,如下圖所示。進(jìn)行如下操作:</p><p> 根據(jù)MagicSOPC部分引腳索引表在Location欄中輸入對(duì)應(yīng)管腳號(hào)</p><p> 核對(duì)完成后在菜單欄中File>>close,便可以退回到主界面cnt_4b.bdf頂層文件中</p><p> 至此我們已經(jīng)完成了在QuartusI
37、I上的軟件設(shè)計(jì)和相關(guān)設(shè)置,下一步就是全局編譯了!</p><p> 8. 全程編譯和下載程序</p><p> 點(diǎn)擊工具欄中,對(duì)整個(gè)工程文件進(jìn)行全程編譯處理,若在編譯過(guò)程中發(fā)現(xiàn)錯(cuò)誤,則找出并更正錯(cuò)誤,直至編譯成功為止。</p><p> 在編譯系統(tǒng)過(guò)程中,狀態(tài)窗口顯示整個(gè)編譯進(jìn)行及每個(gè)編譯階段所用的時(shí)間。在編譯結(jié)果顯示在Compilation Report窗口
38、中。</p><p> 在編譯工程中可能產(chǎn)生很多警告信息,但這個(gè)不會(huì)影響設(shè)計(jì)結(jié)果!比如在本實(shí)驗(yàn)中,筆者在自己的電腦上運(yùn)行該編譯過(guò)程39秒,產(chǎn)生了13個(gè)警告信息。這些信息可以根據(jù)軟件手冊(cè)和提示得到一定的解決!對(duì)話框提示”Info: Quartus II Full Compilation was successful. 0 errors, 13 warnings”</p><p> 點(diǎn)擊確
39、定即可!如上圖所示</p><p><b> 查看編譯報(bào)告</b></p><p> 在下載程序之前,請(qǐng)?jiān)趯?shí)驗(yàn)箱上確保數(shù)字信號(hào)源(在核心板臨邊右側(cè))的JP11的短路帽是處于ON位置,JP7中CLOCK0的短路帽處于4hz位置。</p><p> 這里還要特別提示CLOCK0~CLOCK3對(duì)應(yīng)的排針左邊由不同頻率的數(shù)字信號(hào),排針右邊是連到一
40、起的,所以每組信號(hào)源只能插一個(gè)短路帽,否則可能會(huì)損害芯片!</p><p> 下載硬件設(shè)計(jì)到目標(biāo)FPGA</p><p> 方式一 成功編譯硬件系統(tǒng)后,將產(chǎn)生cnt_4b.sof的FPGA配置文件輸出。本步驟簡(jiǎn)單介紹利用JTAG方式下載到目標(biāo)FPGA器件的步驟。</p><p> 通過(guò)Z-Blaster下載電纜連接實(shí)驗(yàn)箱JTAG口和主計(jì)算機(jī),接通實(shí)驗(yàn)箱電源&l
41、t;/p><p> 在QuartusII軟件中選擇Tools>>Programmer,或者點(diǎn)擊工具欄按鈕。打開(kāi)編程器窗口并自動(dòng)打開(kāi)配置文件(cnt_4b.sof),如下圖所示。</p><p> 確保編程器窗口左上角的Hardware Setup欄中硬件已經(jīng)安裝</p><p><b> 選擇JTAG模式</b></p>
42、;<p> 確保Program/Configure下的方框選中</p><p> 單擊開(kāi)始使用配置文件對(duì)FPGA進(jìn)行配置,Progress欄顯示配置進(jìn)度。</p><p> 方式二 成功編譯硬件系統(tǒng)后,將產(chǎn)生cnt_4b.pof的FPGA配置文件輸出。本步驟簡(jiǎn)單介紹利用AS方式下載到目標(biāo)FPGA器件的步驟。</p><p> a.通過(guò)Z-Bl
43、aster下載電纜連接實(shí)驗(yàn)箱AS口和主計(jì)算機(jī),接通實(shí)驗(yàn)箱電源</p><p> b.在QuartusII軟件中選擇Tools>>Programmer,或者點(diǎn)擊工具欄按鈕。</p><p> c.確保編程器窗口左上角的Hardware Setup欄中硬件已經(jīng)安裝</p><p> d.選擇AS模式,由于筆者之前默認(rèn)的JTAG方式下載,所以需要手動(dòng)添加
44、cnt_4b.pof文件</p><p> 點(diǎn)擊彈出對(duì)話框選擇cnt_4b.pof文件后點(diǎn)擊打開(kāi),這樣就將需要的文件添加進(jìn)去(如果之前有SOF文件,需要先選中文件后按按鈕加以刪除)</p><p> e.確保Program/Configure下的方框選中</p><p> f.單擊開(kāi)始使用配置文件對(duì)FPGA進(jìn)行配置,Progress欄顯示配置進(jìn)度。</p
45、><p> 這里方式一是利用JTAG方式,掉電后FPGA中的配置數(shù)據(jù)將丟失,因?yàn)榕渲梦募鎯?chǔ)在RAM中,下載速度相對(duì)主從AS下載較快。方式二是利用AS方式,它可以將配置文件寫(xiě)入掉電保持的EPCS中,在上電時(shí)使用EPCS對(duì)FOGA進(jìn)行配置。</p><p> 另外,在選擇下載方式前,一定要保持電源關(guān)閉,避免出現(xiàn)手指觸碰芯片管腳!</p><p> 9. 實(shí)驗(yàn)結(jié)果與實(shí)
46、驗(yàn)現(xiàn)象</p><p><b> 實(shí)現(xiàn)現(xiàn)象與分析:</b></p><p> 數(shù)字信號(hào)源為4Hz狀態(tài)下,計(jì)數(shù)值以這樣的頻率遞增并在八位數(shù)碼管顯示0,1,2,3,4,5,6,7,8,9,A,B,C,D,F,1,2………..,每當(dāng)遞增至F值時(shí),LED3燈亮,表示由進(jìn)位輸出。</p><p> 將SW1上撥到0處,顯示當(dāng)前值,停止計(jì)數(shù)</
47、p><p> 按下核心板上RST,計(jì)數(shù)值清零,顯示為0</p><p><b> RTL級(jí)圖</b></p><p> Technology Map Viewer Preprocess</p><p><b> 實(shí)驗(yàn)心得與注意事項(xiàng)</b></p><p> 1)本實(shí)現(xiàn)關(guān)
48、鍵部分是cnt4b.v文件的設(shè)計(jì),下面圖形是筆者在做cnt4b.v文件綜合編譯后得到的帶異步復(fù)位的4位加法計(jì)數(shù)器RTL圖</p><p> 現(xiàn)在結(jié)合計(jì)數(shù)模塊的源程序加以說(shuō)明:</p><p> 圖中間的四位鎖存器,rst是異步清零信號(hào),低電平有效;clk為時(shí)鐘脈沖信號(hào),是計(jì)數(shù)加的頻率給定。ena是計(jì)數(shù)使能信號(hào),當(dāng)為高電平的時(shí)候鎖存信號(hào)。</p><p> 需要
49、說(shuō)明的是:程序計(jì)數(shù)模塊中always如何產(chǎn)生鎖存器?</p><p> always @(posedge clk or negedge rst)</p><p><b> begin</b></p><p> if(rst == 1'b0)//異步清零,低電平有效</p><p> c
50、nt <= 4'h0;</p><p> else if (ena == 1'b1)//同步使能計(jì)數(shù),高電平有效</p><p> cnt <= cnt + 1'b1;</p><p><b> end</b></p><p> 仔細(xì)閱讀上述代碼既可以發(fā)現(xiàn)如下問(wèn)
51、題:</p><p> Always塊,else if語(yǔ)句保證了ena == 1'b1(高電平)時(shí),執(zhí)行計(jì)數(shù)功能。而沒(méi)有寫(xiě)出ena == 1'b0時(shí)的結(jié)果,那么其實(shí),如果在給定的條件下變量沒(méi)有賦值,這個(gè)變量將保持原值,也就是會(huì)說(shuō)生成一個(gè)鎖存器,這里的話就是當(dāng)將ena==0時(shí),cnt值保持不變,不會(huì)根據(jù)時(shí)鐘信號(hào)累加!</p><p><b> 2)</b&
52、gt;</p><p> 數(shù)字信號(hào)源:能產(chǎn)生0.5Hz~100MHz多組數(shù)字信號(hào)源,分CLOCK0~CLOCK3四組信號(hào)輸 出,通過(guò)短路帽跳線分別可選擇不同的時(shí)鐘信號(hào)輸入到FPGA,CLOCK0~CLOCK3對(duì)應(yīng)的排針左邊為不同頻率的數(shù)字信號(hào),排針右邊是連到一起的,所以每組信號(hào)源只能插一個(gè)短路帽,否則可能會(huì)損壞芯片。 使用時(shí)要將數(shù)字信號(hào)源的電源開(kāi)關(guān)JP11的短路帽跳到ON位置。</p><p
53、> FPGA編程 :通過(guò)JTAG接口下載FPGA程序時(shí),最好將下載器插在主板上的JTAG接口,不要插在核心板的JTAG接口上,以防插反;如果使用AS接口下載程序時(shí),一定要斷電后才能把下載器插到AS接口,確保不插反才能上電。 下載線接插最好按照以下流程:先將10Pin的仿真下載線(連著下載器)插到FPGA的JTAG或AS接口,然后再將下載器另一端的USB線插到電腦上。</p><p> 其他注意事項(xiàng),見(jiàn)計(jì)
54、數(shù)文檔紅色字體處!</p><p><b> 附錄1 計(jì)數(shù)模塊</b></p><p> module cnt4b(clk,rst,ena,dout,cout); //模塊名cnt4b</p><p> input clk,rst,ena;//輸入信號(hào)</p><p> ou
55、tput[3:0]dout;//計(jì)數(shù)輸出</p><p> output cout;//進(jìn)位輸出</p><p> reg[3:0]cnt;//計(jì)數(shù)器</p><p> assign cout = &cnt;//進(jìn)位輸出 &</p><p&g
56、t; assign dout = cnt;//計(jì)數(shù)器輸出</p><p> always @(posedge clk or negedge rst)</p><p><b> begin</b></p><p> if(rst == 1'b0)//異步清零,低電平有效</p>
57、<p> cnt <= 4'h0;</p><p> else if (ena == 1'b1)//同步使能計(jì)數(shù),高電平有效</p><p> cnt <= cnt + 1'b1;</p><p><b> end</b></p><p><b
58、> endmodule</b></p><p> 模塊名一定要與所建立的文件名相一致,否則會(huì)出現(xiàn)編譯異常!</p><p> assign模塊以及always模塊之間的并行執(zhí)行的關(guān)系,時(shí)序上同步!但always模塊內(nèi)部由順利執(zhí)行的關(guān)系!這也是FPGA不同與C語(yǔ)言的很重要的一點(diǎn)!</p><p> assign cout = &cnt
59、;對(duì)于這條語(yǔ)句中,用到了縮減運(yùn)算符&,它是對(duì)單個(gè)操作數(shù)進(jìn)行與遞推運(yùn)算,最后的運(yùn)算結(jié)果是一位的二進(jìn)制數(shù)。筆者理解為</p><p> assign cout = &cnt相當(dāng)于assign cout = ((cnt[0]&cnt[1])&cnt[2])&cnt[3],這樣就保證了當(dāng)計(jì)數(shù)值加1到F(全1),出現(xiàn)進(jìn)位信號(hào)高電平。</p><p> r
60、eg[3:0]cnt;寄存器變量只有在always塊或者是initial塊中能夠使用,always塊在仿真過(guò)程中不斷重復(fù)執(zhí)行,至于能否執(zhí)行里面的代碼取決于后面的敏感變量表的參量clk或者是rst是否發(fā)生變化</p><p><b> 附錄2</b></p><p> module decl7s(d,seg);//模塊名decl7s</p>
61、<p> input[3:0] d;//輸入4位二進(jìn)制碼</p><p> output[7:0]seg;//七段譯碼輸出</p><p> reg[7:0] seg_r;//定義數(shù)碼管輸出寄存器</p><p> assign seg = seg_r;//輸出數(shù)碼管譯碼結(jié)果</p>
62、;<p> always @(d)</p><p><b> begin</b></p><p> case(d)//七段譯碼</p><p> 4'h0:seg_r = 8'hc0;//顯示0</p><p> 4'h1:seg_r = 8'
63、;hf9;//顯示1</p><p> 4'h2:seg_r = 8'ha4;//顯示2</p><p> 4'h3:seg_r = 8'hb0;//顯示3</p><p> 4'h4:seg_r = 8'h99;//顯示4</p><p> 4'
64、h5:seg_r = 8'h92;//顯示5</p><p> 4'h6:seg_r = 8'h82;//顯示6</p><p> 4'h7:seg_r = 8'hf8;//顯示7</p><p> 4'h8:seg_r = 8'h80;//顯示8</p>&
65、lt;p> 4'h9:seg_r = 8'h90;//顯示9</p><p> 4'ha:seg_r = 8'h88;//顯示a</p><p> 4'hb:seg_r = 8'h83;//顯示b</p><p> 4'hc:seg_r = 8'hc6;//
66、顯示c</p><p> 4'hd:seg_r = 8'ha1;//顯示d</p><p> 4'he:seg_r = 8'h86;//顯示e</p><p> 4'hf:seg_r = 8'h8e;//顯示f</p><p><b> endcase&
67、lt;/b></p><p><b> end</b></p><p><b> endmodule</b></p><p><b> 分析</b></p><p> 前面計(jì)數(shù)模塊輸出的計(jì)數(shù)值正是顯示模塊的輸入值集,即4bit的d變量值。</p>&
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
評(píng)論
0/150
提交評(píng)論