學(xué)業(yè)輔導(dǎo)精編版-4第51組_第1頁
學(xué)業(yè)輔導(dǎo)精編版-4第51組_第2頁
學(xué)業(yè)輔導(dǎo)精編版-4第51組_第3頁
學(xué)業(yè)輔導(dǎo)精編版-4第51組_第4頁
學(xué)業(yè)輔導(dǎo)精編版-4第51組_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

實驗一.序列檢測器設(shè) 【仿真分析及分步結(jié)果 【FPGA資源使用及warning的理解 實驗二.數(shù)字鎖設(shè) 【仿真分析及分步結(jié)果 【FPGA資源使用及warning的理解 實驗三.四位符號除法設(shè) 【仿真分析及分步結(jié)果 【FPGA資源使用及warning的理解 實驗四.同步FIFO的設(shè) 一 實驗?zāi)?二 實驗內(nèi) 1、FIFO模塊接 仿真編寫及仿真波 4、關(guān)于warning的說 5、使用資源說 三.實驗總 四.附 仿真 實驗五.屏幕保護程序的設(shè)計與實 三.實驗方 四.實驗總 五.附 實驗六.鎖相環(huán)設(shè)計設(shè)計報 【仿真分析及分步結(jié)果 【FPGA資源使用及warning的理解 實驗七.Cordic算法實現(xiàn)設(shè)計報 四.具體方 功能仿 VHDL實 五.仿真效 實際效 六.實驗總 實驗一.序列檢測器設(shè)【問題描述1101reset有效?!驹O(shè)計方案sel端處使用Moore狀態(tài)機,1101同sel[0]綁定,最的‘1’同sel[3]綁定。速率同sel[3downto0]選擇速率一致即可。此處應(yīng)該注意的是resetsegmentsel都回到初值。對于防抖動的部分,pdfbasys2板【仿真分析及分步結(jié)果下圖為整個模塊的RTLdivider控制燈亮或者不亮即找到或者沒有找到指定序列。My_segment為數(shù)碼管顯示模塊,其segment[6downtown0]sel[3downto0]兩個部分控制數(shù)碼管。bit/=bit_delay來判定是否按鍵按下。序列檢測模塊中,需要注意狀態(tài)機的寫法是狀態(tài)是固定的幾種(本實驗中是4led=1,即使得小燈亮的狀態(tài)只有一種。數(shù)碼管顯示部分要與序列檢測部分綁定一起,即只有sel[3]=’1’bit=’1;reset有效?!綟PGA資源使用及warning的理解ifclk’eventandclk=’1’之下,即所有的寄存器都是去檢測時鐘邊沿而不是僅僅對時鐘進行判warningwarningsegment_dat這個寄存器掉以節(jié)約合時這種截掉某些Bit(如沒有連線的Register,只定義沒有用到的Register【Testbench由于對于第一個實驗相對簡單,因而很多同學(xué)都沒有使用testbench來進行,Testbenchd0d1(bit0bit1)bit1waitfor10*clk_period后為’1’然T內(nèi)變?yōu)椤?’,依次來代表在實際上按下一個按鍵’1’的情形。【實驗結(jié)論檢測檢測檢測到檢測檢測到檢測燈亮檢測檢測到檢測到Resetreset沒有暗,后來經(jīng)過調(diào)試較reset后的初始值就好了。由于實驗調(diào)試中發(fā)現(xiàn)“1101”序列并不是每一次都可以檢測到,這也是代碼有些Bug實驗二.數(shù)字鎖設(shè)【問題描述撥碼開關(guān)限制4位,8個開關(guān)每兩個開關(guān)表達0,1,2三個數(shù)字中的一個,按鍵輸入bit0,bi1,bi2三位來表達0,1,2三個數(shù)字,按鍵輸入,數(shù)碼管相應(yīng)顯示,若正確,則指示reset復(fù)位?!驹O(shè)計方案sel端處使用Moore狀態(tài)機,sel輸出,按鍵輸入只有與開關(guān)對應(yīng)上,狀態(tài)速率同sel[3downto0]選擇速率一致即可。此處應(yīng)該注意的是resetsegmentsel都回到初值。對于防抖動的部分,pdfbasys2板【仿真分析及分步結(jié)果bit[2downto0],檢測輸出是否與撥碼開關(guān)設(shè)置相同。My_segmentsegment[6downtown0]sel[3downto0]兩Bit[2downto0]的輸入中值得提到的是檢測到按鍵按下這一步驟,不能直接寫作bit/=bit_delay來判定是否按鍵按下。狀態(tài)轉(zhuǎn)移模塊中,需要注意狀態(tài)機的寫法是狀態(tài)是固定的幾種(本實驗中是4數(shù)碼管顯示部分要與序列檢測部分綁定一起,即只有sel[3]=x3;sel[2]=x2;sel[1]=x1;sel[0]=x0;才可以認為輸出正確?!綟PGA資源使用及warning的理解ifclk’eventandclk=’1’之下,即所有的寄存器都是去檢測時鐘邊沿而不是僅僅對時鐘進行判warningwarningsegment_dat這個寄存器掉以節(jié)約合時這種截掉某些Bit(如沒有連線的Register,只定義沒有用到的Register的速率,如果在高速中,會嚴重影響時序。上述綜合的warning也很常見,就是在代碼中缺少一些需要的敏感表。從程序的寫如果是異步(reset在實驗中使用的就是異步的)就應(yīng)該加入敏感表中。否則將會變成同【Testbench由于前幾個實驗相對簡單,因而很多同學(xué)都沒有使用testbench來進行,直接detectror(狀態(tài)轉(zhuǎn)移圖)testbench如上圖。Testbenchbit[2downto0]reset,同時可以看到在輸出正確結(jié)果led7led0亮?!緦嶒灲Y(jié)論燈亮N次都失敗之后給出一個標(biāo)示燈亮標(biāo)示嘗試次數(shù)過多,需要鎖定等。實驗三.四位符號除法設(shè)【問題描述【設(shè)計方案 B【仿真分析及分步結(jié)果下圖為整個模塊的RTLSignedDividerDin1(3downto0)為被除數(shù),Din2(3downto0)為除數(shù),Dout為輸出的商,Rout為輸出的【FPGA資源使用及warning的理解ifclk’eventandclk=’1’之下,即所有的寄存器都是去檢測時鐘邊沿而不是僅僅對時鐘進行判When…else語句,因而組合邏輯的使用相對較多,when….elseif…else雖然可以寫出同樣的功能,但是它們用法背后的本質(zhì)是不同的,if…elseprocesswhen…elseprocess外面,是并if…else語句,而時間要求小,需要同步when…else。warning很少,全部都是由于冗余的寄存器造成在綜合的時候需要被截掉Bit(Register,只【Testbench本實驗并沒有用testbench【實驗結(jié)論實驗四.同步FIFO的設(shè)一.實驗?zāi)?FIFO2FIFOVHDLVHDL二.實驗內(nèi)1FIFO-FIFO深度,若FIFO內(nèi)數(shù)據(jù)數(shù)目Full8-FIFO寬度,代表數(shù)據(jù)的位4-FIFO-1-1reset-FIFO-1FIFO-1FIFO-FIFO-1FIFO1FIFO-1FIFO1FIFO1如圖示,我們設(shè)計的Ram_FIFO模塊由FIFO_Control模塊和ram模塊組成。其中FIFO_ControlramFIFO_Full、FIFO_Empty信號。Full、Empty判斷0,emptypre1從-10,full信號置高。3、Testbench、仿真編寫及仿真波針對頂層模塊,我們編寫了testbench以及的仿真fifosim.do,見附錄。之后在中輸入dofifosim.do指令得到以下仿真波形:圖 從仿真波形可以看出,我們的testbench是按照助教的給出的示例波形給的信號,而仿4warning516、DataWidth8bit、AddrSize4bit,占用資源較少。另外其實這個實驗并沒有要下到實驗板三.實驗總FIFO的接口、功能,并自己編寫代碼實現(xiàn)。在實現(xiàn)過程中注意到GENERICFIFO_Depth、DataWidth、AddrSize設(shè)為可調(diào)節(jié)。另外學(xué)習(xí)了testbench的編寫以及仿真的編寫,寫一個好的testbench不FIFO功能,在我們調(diào)試過程、查錯過程中也會有很大的幫助。四.附

仿真vcomvsim-novoptwork.FIFO_testaddwave\{sim:/FIFO_test/wr_en}{sim:/FIFO_test/fifo_empty}radixunsignedwhen{$now=@2500ns}{echo"Simulationend"}run-all實驗五.屏幕保護程序的設(shè)計與實一.實驗?zāi)?.二.實驗內(nèi)ROM8x5184btn[0]45度方向移動,移到屏幕btn[0]圖像又繼續(xù)動作。btn[1]1btn[2]2:滾三.實驗方1圖2屏保模塊框 圖396x54像素顯示圖在ScreenSaver模塊中有調(diào)用一個IPCoreBlockMemory用以96x54像素圖“ world”圖像并通 處理Mc''c

4IPCoreBlockMemory實現(xiàn)ROMVGAVGA25MHz640x480的標(biāo)25MHz1/(25x106)=0.04us640x480640640x0.04us=25.60usVGA一般規(guī)范,同步脈沖的長度大約為行顯示時間的0.15倍,這里我取96個時鐘像素。而顯示后沿和顯示前沿大約各為行顯示時間的3/40和1/40。因此,顯示后沿和1.92us0.64us4816個時鐘像素。80032us160s,32us521行。場時序需要480行x32us/行=15.360ms的時間。根據(jù)規(guī)范,場同步脈沖大約為場時序的1/240。因此,場同步脈沖Sync需要0.064ms,即2行。顯示前沿和顯示后沿分2910行。29480行的像素可見區(qū)域,最10521,清零并按上述過程重新開始,VGA控制器開始往屏幕寫入新的一幀。12:154541如此往復(fù)得到。滾world”(具體實現(xiàn)見代碼)offset1966BRAM3IPCoreBlockMemory所用到的??梢钥吹皆搶嶒灠逡还驳腂RAM所以一幅96x54像素的圖像是較為合理的利用了資源。Countercounter(3)4、5、6位都沒有連任何東西,所以不會影響結(jié)果。之所以將counter6位,是因為調(diào)試起來方便,調(diào)節(jié)圖四.實驗總本次實驗中用到了IPCore,學(xué)會了用 生成mark.coe文檔初始化ROM。可以說,合理的調(diào)用IPCore可以讓我們程序設(shè)計更加高效。如專門寫testbenchtestbench。IPCore的方式與助教給出的略有不同。我用的軟件環(huán)境是XilinxISEDesignSuite12.464bit。但最終實現(xiàn)的功能相同。五.附代碼:functionimg2=IMG2coe8(imgfile,outfile)fprintf(s,'%s\n',';VGAMemoryMap');fprintf(s,'%s\n',';.COEfilewithhexcoefficients');forr=1:heightfor

實驗六.鎖相環(huán)設(shè)計【問題描述率要“實時”到。主要思路是利用鎖相環(huán)來實現(xiàn)輸出信號對于輸入信號的鎖定?!驹O(shè)計方案N計數(shù)器四部分構(gòu)成。如下圖:Fo1000Hz的數(shù)量級。其中可逆控制模塊與加減控制模塊額clk50M主時鐘。K的計數(shù)器(K=50M/1000,數(shù)量級在這個范1’時,可逆計數(shù)器加,加到K則逸出“進2分頻。在不同的M下,N的選擇也是不同的。因而實際中我是在每個周期都是對輸入信號T,來換算得到合適N值?!痉抡娣治黾胺植浇Y(jié)果下圖為整個模塊的RTLs_gentask6_basic模塊是DPLL鎖相環(huán)模塊,輸出一個1.5倍頻的50%占空比的,其中ISIMclk為時鐘,x為輸入,y_temp為輸出,resetpadyx1.5y50%,滿足要求。在testbench里面,x1000hz量級來實現(xiàn)。下圖為模K計數(shù)testbench示意圖,其中K此時選取25,可以看到輸入信號占空比上圖為加減控制器的testbenchins為上升沿(這里僅僅去采insdecins為’1’的時候都減少脈沖)時,iout輸出信號會減少一個dec為上升沿時,iout輸出信號會增加一個脈沖。Iout信號的增加或者減(200nsinsdec的上升沿時,都應(yīng)該先去判iout的輸出是高還是低,若為‘10decinsdec做一個寄【實驗特色1.510Hz/sNN的大小與輸入信號有關(guān),輸入頻NTT結(jié)束都去重新更ns級別內(nèi)?!綟PGA資源使用及warning的理解DPLL模塊中鎖為寄存器。Tempclk上升沿的時候改變。warningwarningn2這個寄存器我給它元件之間的扇出量,影響它前級和后繼模塊的速率,如果在高速中,會嚴重影響時序。還有一種綜合的warning很常見,就是在代碼中缺少一些需要的敏感表。從程序的【Testbench每一步驟的仿真波形見上文中的“仿真及分步結(jié)果,這里僅簡略描述我對于每一testbench中輸入信號是如何給出的。Testbench對于一個需要分塊進行的模塊是十分必要的,尤其是對于一些自己并不確定(DPLL3testbenchK計數(shù)器,及加減控制模塊。而對于分頻模塊和除法模塊則沒有testbench)【實驗結(jié)論Spartan3dsp48E,所以用了*號來做乘法,后來一直有這樣做出來更有成就感,更能感受到自己如果真正參與科研也是做一個整體的一部分的感覺。1.5倍頻,而且還給定了輸入信號的范圍,但是頻率是輸入頻率1.5倍頻的的思路更容易理解(如開始生成一個1000hz的,然后用一寫counter來計數(shù)比較頻率,小則加,大則減,這種思路已經(jīng)拋開了鎖相環(huán),但是同樣實驗七Cordic算法實報一.實驗?zāi)緾ordicsin和cos二.實驗內(nèi)0000416p和角度數(shù)值(單位是弧度)的對應(yīng)關(guān)系如下:

/2

/2即:顯示“FFFF”代表/2“0001”代表 BTN3、2、1、04個數(shù)碼管顯示的角度內(nèi)容,每按一下按鈕,對1(加到‘F’時再按按鈕回到‘SW0SW1cos值,SW1sin416d和對應(yīng)的數(shù)值vvd/1即:顯示“FFFF”代表計算結(jié)果v1,顯示“0001”代表v 1090三.實現(xiàn)原CordicCordic算法實現(xiàn)的是一次極坐標(biāo)的轉(zhuǎn)換,如下圖所示,將極坐標(biāo)向量(X0,Y0)變成新極坐標(biāo)向量(X,Y)

(X,X

sinX0Y sin

Y

(X0,

0 每一次

X1

Snn

narctann

SnXn1cos

sinSnnXn

sinS

cosS

Yn1 n nnn利用上述公式從X0Y0依次計算X1,Y1、X2Y2、X3,Y3、……、XN,YN。N,XN,YNX,Y。根據(jù)n的特殊取值(3)可以簡化公式(5)的硬件實現(xiàn),即Xn1

cos

2nX

nS2 Yn1 n如果在計算遞推表達式(6)的時候故意漏掉前面的系數(shù)cosn,即用下面的迭代表達式 S2nXnYSn n1nYSn

2

Y

n1

n

X則,當(dāng)?shù)螖?shù)足夠大時(n)可以發(fā)現(xiàn)最終的迭代結(jié)果

和直接計算公式(1)XY到的正確答案 的關(guān)系為Y

X

cos

X

Y Y

Kcosn0.607253XnXn1 S2Yn1Snn1 XnYnZn1ZnSn1ifZifZnnnX Y cosn XYX,Y就是要求的Sin

累計旋轉(zhuǎn)的角

和最終需要旋轉(zhuǎn)角度

X1

k

Y00,Z0Zn k

S

ifZn

ifZn

利用Cordic計算cos和sin(7)(8)對坐標(biāo)(1,0)旋轉(zhuǎn)角度得到的坐標(biāo)X,Ycossin其中公式(8)所做的乘法運算K0.607253體方根據(jù)上述Cordic算法,設(shè)計了如 設(shè)計做功能仿真。代碼在老師給出的基礎(chǔ)上做了進N=17是根據(jù)運算精度得出的結(jié)論。N=17是根據(jù)運算精度得出的結(jié)論。度,做有符號數(shù)運算時補一位。角度θ的精度為16位,theta_bintheta做十二進制轉(zhuǎn)換,轉(zhuǎn)換172VHDLROM提供數(shù)Z為π/2的量化(VHDLtestbench相對應(yīng)xy2*17XY,通過仿真,VHDLTest波形進aquirementoftheprecision%arctan(2^-16)>pi/2/2^16>arctan(2^-17)forn=1:N-

2Cordicifs==0VHDLVHDL3首先是Cordic_pipline模塊。該模塊功能是進行一次右圖中的公式運算。其中調(diào)用了ipCORE,用于上述中4IPCore-BlockMemorytheta.coe文檔如下:Cordic模塊接收所需運算的角度大小,并控制Cordic_pipline17次,將輸出傳遞給輸入以實現(xiàn)迭代。其中,整個迭代運算在兩拍內(nèi)完成,一拍Cordic_pipline輸出到輸入

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論