![通信與電子系統(tǒng)綜合設(shè)計實驗報告6系_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/16/dc124042-f606-4eb6-aa41-fbbea6eb3b8a/dc124042-f606-4eb6-aa41-fbbea6eb3b8a1.gif)
![通信與電子系統(tǒng)綜合設(shè)計實驗報告6系_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/16/dc124042-f606-4eb6-aa41-fbbea6eb3b8a/dc124042-f606-4eb6-aa41-fbbea6eb3b8a2.gif)
![通信與電子系統(tǒng)綜合設(shè)計實驗報告6系_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/16/dc124042-f606-4eb6-aa41-fbbea6eb3b8a/dc124042-f606-4eb6-aa41-fbbea6eb3b8a3.gif)
![通信與電子系統(tǒng)綜合設(shè)計實驗報告6系_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/16/dc124042-f606-4eb6-aa41-fbbea6eb3b8a/dc124042-f606-4eb6-aa41-fbbea6eb3b8a4.gif)
![通信與電子系統(tǒng)綜合設(shè)計實驗報告6系_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/16/dc124042-f606-4eb6-aa41-fbbea6eb3b8a/dc124042-f606-4eb6-aa41-fbbea6eb3b8a5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 通信與電子系統(tǒng)綜合設(shè)計院系: 信息學(xué)院6系 姓名: 學(xué)號: 郵箱: cxxie 手機: 2013年12月27日設(shè)計一 實現(xiàn)FPGA對CPLD外設(shè)的全部利用實驗要求 編寫CPLD程序控制其外設(shè)(LED,數(shù)碼管,輸入開關(guān)等),并全部提供給FPGA使用 編寫CPLD與FPGA(XC2V2000)的接口電路,實現(xiàn)FPGA與CPLD外設(shè)的直接對應(yīng)關(guān)系. 編寫FPGA程序測試CPLD的全部外設(shè)實驗說明1.硬件分析本次實驗涉及的硬件包括:4個脈沖觸發(fā)開關(guān)、8個撥碼開關(guān)、8個7段數(shù)碼管、32個LED發(fā)光二極管以及如圖1.1所示的CPLD和FPGA芯片。0/1開關(guān) 8位脈沖開關(guān) 4位LED 32位數(shù)碼管 8位
2、Xilinx CPLDXC95114XLXilinx FPGAXC2V2000圖1.1 硬件連接圖2.實驗要求分析要求通過FPGA對CPLD的全部外設(shè)進行控制,如果不進行編碼則需要4+8+32+16=60根連接線,而實際只有23條,在這種情況下,對于8位撥碼開關(guān),可以在CPLD中對進行并串轉(zhuǎn)換,8位需要3位地址線,再用一位表示指定地址的撥碼開關(guān)的狀態(tài),這樣就可以用4位將8位撥碼開關(guān)信號傳輸?shù)紽PGA,在FPGA中將4位表示撥碼開關(guān)的信號進行串并轉(zhuǎn)換,得到8位信號,然后用這8位信號控制8個7段數(shù)碼管,用高4位信號表示段碼,再用低四位實現(xiàn)功能控制,最多有16種。對于4個脈沖開關(guān),可直接傳輸,在FP
3、GA中,用這4位信號實現(xiàn)對32位LED發(fā)光二極管進行控制;此外,8個7段數(shù)碼管,需要3根地址線和4根數(shù)據(jù)線,32個LED發(fā)光二極管,需要5根地址線和1位狀態(tài)位,狀態(tài)位用來表示指定地址的LED的狀態(tài)。通過上述分析,總共需要4+4+3+4+5+1=21根連接線,不超過實際的23條連接線,所以上述方案是可實現(xiàn)的。圖1.2為FPGA控制CPLD外設(shè)的結(jié)構(gòu)示意圖。4位脈沖開關(guān)信號,4位撥碼開關(guān)信號(先并串轉(zhuǎn)換在串并轉(zhuǎn)換)外設(shè)CPLDFPGALED控制信號(5位地址+1位狀態(tài))數(shù)碼管控制信號(3位位選+4位段碼)CPLD和外設(shè)連接圖1.2 FPGA控制CPLD外設(shè)的結(jié)構(gòu)示意圖設(shè)計方案1. CPLD程序設(shè)計
4、CPLD程序分為以下幾個功能模塊:首先對八位撥碼開關(guān)信號進行并串轉(zhuǎn)換傳輸?shù)紽PGA中;對脈沖開關(guān)信號進行處理,每按一次脈沖開關(guān),經(jīng)過程序處理得到0或1傳輸?shù)紽PGA;對FPGA傳輸過來的5位LED地址、數(shù)碼管3位位選信號和4位段碼信號進行譯碼然后將譯碼之后的信號傳輸?shù)酵庠O(shè)。CPLD程序主要結(jié)構(gòu)圖如如1.3所示。圖1.3 CPLD程序結(jié)構(gòu)圖a) 并串轉(zhuǎn)換8位撥碼開關(guān)信號進入CPLD后對其進行并串轉(zhuǎn)換,轉(zhuǎn)換后用4位信號表示,其中高3位表示撥碼開關(guān)地址,最低位表示開關(guān)的狀態(tài)。在程序模塊,用一個3位計數(shù)器,每一次時鐘上升沿到來時計數(shù)器加1,然后根據(jù)計數(shù)器的值進行選擇轉(zhuǎn)換,程序如下:process(cl
5、k,dip,counter)beginif(clk'event and clk='1')thenif counter>="111" thencounter<="000"elsecounter<=counter+1;end if;end if;case counter iswhen "000" => dip_sw<="000"&dip(0);when "001" => dip_sw<="001"&
6、dip(1);when "111" => dip_sw<="111"&dip(7);when others =>dip_sw<="111"&dip(7);end case;end process;b) 脈沖開關(guān)信號處理每按一次脈沖開關(guān),對其脈沖信號進行處理,得到1位信號0或1然后傳輸?shù)紽PGA。其處理的程序如下(4個脈沖開關(guān)處理過程一樣):process(key1)variable K1 : std_logic;beginif key1'event and key1='1'
7、; then K1:=not(K1);end if;pul_sw1<=K1;end process;c)LED地址譯碼 5位LED地址信號和1位LED狀態(tài)信號從FPGA傳輸?shù)紺PLD后要對其進行譯碼,其代碼如下:process(clk)begin if clk'event and clk='1' thencase led_addr is when "00000" => led(0)<=led_val; when "00001" => led(1)<=led_val;when "11110&q
8、uot; => led(30)<=led_val;when others => led(31)<=led_val;end case;end if;end process;d) 數(shù)碼管位選和段碼譯碼 FPGA傳輸過來的3位位選信號和4位段碼信號,需要在CPLD中對其進行譯碼,然后直接傳輸?shù)酵庠O(shè)。其代碼見附錄中實驗1的CPLD完整代碼。2. FPGA程序設(shè)計在FPGA程序中,首先要對系統(tǒng)48MHz時鐘進行兩次分頻得到10KHz和1Hz的時鐘,其中10KHz時鐘用于LED和數(shù)碼管進程控制,1Hz時鐘用于循環(huán)功能控制;其次要對CPLD傳輸過來的撥碼開關(guān)的4位串行信號進行串并轉(zhuǎn)換
9、得到8位信號;LED驅(qū)動模塊包括LED功能控制進程、LED循環(huán)控制進程以及計數(shù)最大為32的計數(shù)器(在進程中指定LED的位置);數(shù)碼管驅(qū)動模塊包括數(shù)碼管功能控制進程、數(shù)碼管循環(huán)控制進程和一個32bit計數(shù)器。由于FPGA的VHDL代碼較長,見附錄中實驗1的FPGA完整代碼。圖1.4為FPGA程序結(jié)構(gòu)圖。3位脈沖信號LED循環(huán)控制進程數(shù)碼管進程控制模塊數(shù)碼管循環(huán)控制進程LED功能控制進程4位串行信號串并轉(zhuǎn)換 1Hz時鐘計數(shù)器 1Hz時鐘10KHz時鐘 10KHz時鐘 32位計數(shù)器 圖1.4 FPGA程序結(jié)構(gòu)圖a) 時鐘分頻FPGA硬件系統(tǒng)接的時鐘頻
10、率是48MHz,在程序中要對其進行分頻。通過兩次分頻得到頻率為10KHz和1Hz的時鐘。10KHz主要用于LED和數(shù)碼管的動態(tài)掃描;1Hz的時鐘用于LED和數(shù)碼管的循環(huán)功能。b)LED功能控制模塊 標號為pul_s1、pul_s2、pul_s3和pul_s4的用于對LED的控制。pul_s2和pul_s1組成2位二進制數(shù)用于表示LED實現(xiàn)何種功能;pul_s3用于計數(shù)值最大為32的計數(shù)器的觸發(fā)控制,pul_s3每按下一次計數(shù)器計數(shù)值(LED_cnt)加1,用于指定LED的地址;pul_s4用于功能實現(xiàn)中子功能的選擇。四個脈沖開發(fā)和LED功能的關(guān)系如表1.1。表1.1 四個脈沖開關(guān)與LED功能對
11、應(yīng)關(guān)系c)數(shù)碼管功能控制模塊撥碼開關(guān)4位串行信號在FPGA中轉(zhuǎn)換成8位并行信號dip(7 downto 0)后用于控制數(shù)碼管功能實現(xiàn)。高四位dip(7 downto 4)用作功能狀態(tài)位,可以實現(xiàn)16種功能,但在本程序中只設(shè)計了7種功能;低四位dip(3 downto 0)用于數(shù)碼管段碼控制;此外,數(shù)碼管的其中兩個功能是關(guān)于計數(shù)器counter的,8個數(shù)碼管顯示32位計數(shù)器加減計數(shù),計數(shù)器每隔1秒加1或減1。dip(7 downto 0)與數(shù)碼管的功能如表1.2所示。表1.2 dip與數(shù)碼管功能的關(guān)系設(shè)計結(jié)果因為這個實驗分為CPLD設(shè)計和FPGA設(shè)計,故實驗程序仿真也分為兩部分。1. CPLD仿
12、真圖1.5黃顏色部分是8位撥碼開關(guān)信號并串轉(zhuǎn)換的波形,每個時鐘上升沿是轉(zhuǎn)換其中一位,每完成一次轉(zhuǎn)換需要8個時鐘周期;藍顏色和淡粉色的部分分別是4位段碼信號和3位位選信號的譯碼。圖1.5 CPLD仿真波形1圖1.6是LED地址譯碼過程,每個時鐘上升沿到來時將led_value的值賦給指定地址的LED,每完成一次需要32個時鐘周期。圖1.6 CPLD仿真波形22. FPGA仿真圖1.7是LED功能的仿真波形,包括全亮、全滅和循環(huán)移動的仿真波形。圖1.7 LED功能仿真波形圖1.8至圖1.11是數(shù)碼管各個功能的仿真波形,具體功能見圖下方的標注。圖1.8 數(shù)碼管76543210循環(huán)移動功能圖1.9 數(shù)
13、碼管顯示7(可設(shè)置)并循環(huán)移動圖 1.10 數(shù)碼管顯示32位16進制計數(shù)器圖1.11 數(shù)碼管靜態(tài)顯示FDB75310設(shè)計總結(jié)本次實驗由于涉及到CPLD和FPGA的綜合設(shè)計,所以花費的時間比較長。其中CPLD的設(shè)計較為簡單,基本是并串轉(zhuǎn)換和譯碼之類的;而FPGA的設(shè)計相對來說復(fù)雜很多,主要是其包含了LED和數(shù)碼管各種功能的設(shè)計。在設(shè)計過程中,代碼的設(shè)計看似邏輯正確,但在硬件上實現(xiàn)的時候結(jié)果卻不是原本所期望的,比較深的感受是,一開始把LED和數(shù)碼管循環(huán)控制的代碼都放在LED、數(shù)碼管功能控制進程中,但卻不能實現(xiàn)循環(huán)功能,后來分別設(shè)計了一個LED和數(shù)碼管的循環(huán)控制子進程,時鐘選用1Hz,然后讓其和主功
14、能模塊連接起來就達到預(yù)期的目標了。設(shè)計二 AD/DA控制及ChipScope使用實驗要求 FPGA控制AD/DA雙通道最高速度下工作 學(xué)習(xí)ChipScope分析工具,并利用其觀看AD或DA數(shù)字接口的數(shù)據(jù)實驗說明本實驗中用到的AD芯片AD9021和DA芯片AD9761都有兩個通道(I通道和Q通道),用信號發(fā)生器產(chǎn)生兩路不同(幅度、頻率或波形不同)的信號分別接至AD9021的I通道和Q通道,AD9021的輸出信號進入FPGA中經(jīng)過相應(yīng)處理傳送到AD9761的輸入端,經(jīng)過AD9761數(shù)模轉(zhuǎn)換處理之后得到兩路模擬信號分別從I通道和Q通道輸出,然后接至示波器的兩個觀測通道,觀察波形。整個系統(tǒng)的硬件結(jié)構(gòu)圖
15、如圖2.1所示。I低通濾波器信號發(fā)生器1V直流偏置AD: AD9021Xilinx FPGAXC2V2000 -4 FG676Q低通濾波器1V直流偏置I示波器差分轉(zhuǎn)單端DA: AD9761Q差分轉(zhuǎn)單端圖2.1 系統(tǒng)硬件結(jié)構(gòu)圖設(shè)計方案在設(shè)計之前,首先要了解模數(shù)轉(zhuǎn)換芯片AD9021和數(shù)模轉(zhuǎn)換芯片AD9761的參數(shù)和工作原理,之后才能做進一步的設(shè)計。1.AD9021與AD9761的簡單介紹a)模數(shù)轉(zhuǎn)換芯片AD9021AD9201 是一個雙通道、10-bit CMOS 模數(shù)轉(zhuǎn)換器(ADC),采樣速度為20MSPS。 圖2.2給出了AD9021的功能框圖,包括 2個10-bit、20MSPS 的 ADC
16、,2個輸入緩存放大器,一個內(nèi)部參考電壓和復(fù)用的數(shù)字輸出緩存器。圖2.2 AD9021的功能框圖AD9201 內(nèi)部集成了 2個ADC、2個模擬輸入緩沖器、一個內(nèi)部基準和基準緩沖器,以及一個輸出復(fù)用器(multiplexer)。2個 ADC 分別用 I 通道和 Q 通道來表示,它們在輸入時鐘的上升沿同時對各自的輸入信號進行采樣。每個 ADC 都有自己的輸出寄存器,寄存器的內(nèi)容在輸入時鐘的上升沿更新。兩個 ADC 寄存器中的結(jié)果是通過 SELECT 信號來進行選擇的,從圖 2.2 中可以看出,SELECT 為低電平時,選擇 Q 通道輸出;SELECT 為高電平時,選擇 I通道輸出。圖2.3 AD90
17、21時序圖b)數(shù)模轉(zhuǎn)換芯片AD9761AD9761 是一種雙通道、高速、10-bit 的CMOS 數(shù)模轉(zhuǎn)換器(DAC),特別適用于包括 I 路和 Q 路數(shù)字信息處理的寬帶通信應(yīng)用場合(例如擴頻通信)。AD9761 集成了兩個 10-bit、40MSPS 的 DAC,兩個2倍插值濾波器,一個參考電源和數(shù)字輸入接口電路,如圖2.4所示。該器件支持兩個輸入通道,每個通道的數(shù)據(jù)率為 20MSPS,經(jīng)過兩倍的插值,使得兩個DAC同時輸出最高達40 MSPS 的數(shù)據(jù)。圖2.4 AD9761功能框圖圖2.5給出了AD9761 的工作時序圖。在 DAC 的輸入數(shù)據(jù)線 DB9DB0上,I 路和 Q 路數(shù)據(jù)交替輸
18、入。SELECT 為 I 路和 Q 路的選擇信號,當 SELECT為高電平時,輸入數(shù)據(jù)送 I 路的 DAC,當 SELECT 為低電平時,輸入數(shù)據(jù)送 Q路的 DAC。WRITE 信號是寫輸入信號。DAC 的輸入寄存器在 WRITE 的上升沿鎖存數(shù)據(jù)。CLOCK 是時鐘信號。兩個 DAC 的輸出都在 CLOCK 的上升沿更新,同時數(shù)字濾波器分別讀取各自的輸入寄存器。圖 2.5 中,CLOCK的上升沿比WRITE 的上升沿延遲tCINV,但 CLOCK 和 WRITE 也可以連接在一起。圖2.5 AD9761功能框圖2.FPGA設(shè)計簡單介紹完AD9021和AD9671的功能和時序后,就可以進一步進
19、行FPGA設(shè)計。首先要考慮AD9021和AD9761的時鐘問題,因為AD9201 是一個雙通道、10-bit CMOS 模數(shù)轉(zhuǎn)換器(ADC),采樣速度為20MSPS,所以可以采用頻率為20Mhz的時鐘, AD9021的SELECT的頻率也為20MHz,每個ADC都有自己的輸出寄存器,寄存器的內(nèi)容在輸入時鐘的上升沿更新,兩個ADC寄存器中的結(jié)果是通過 SELECT 信號來進行選擇的,從圖 2.3 中可以看出,SELECT為低電平時,選擇 Q 通道輸出;SELECT為高電平時,選擇I通道輸出。對于AD9761,時鐘的頻率可以選擇為40MHz,因為AD9761集成了兩個10bit、40MSPS的DA
20、C,該器件支持兩個輸入通道,這樣每個通道的數(shù)據(jù)率為20MSPS,經(jīng)過兩倍的插值,使得兩個DAC同時輸出最高達40MSPS的數(shù)據(jù),同時AD9761的SELECT的輸入也選擇為20MHz的時鐘。由上述可知,在FPGA設(shè)計中需要用到頻率分別為40MHz和20MHz的時鐘,而FPGA選擇的時鐘頻率為48MHz,需要對其分頻或倍頻。在FPGA中添加一個IP核用于生成40MHz的時鐘,IP核的參數(shù)設(shè)置如圖2.6所示。圖2.6 時鐘IP核的參數(shù)設(shè)置然后對生成的40MHz的時鐘進行二分頻便得到20MHz的時鐘,其二分頻代碼如下。process(clk40Mhz)beginif clk40Mhz'eve
21、nt and clk40Mhz='1' then clk20Mhz<=not(clk20Mhz);end if;end process;FPGA中對于各種輸入信號設(shè)置如下。ADC_CS <= '0'ADC_SLEEP <= '0'DAC_RST <= '0'ADC_CLOCK<=clk20Mhz;ADC_SELECT<=clk20Mhz;DAC_CLOCK<=clk40Mhz;DAC_WRITE<=clk40Mhz;DAC<=ADC;DAC_SELECT<=clk20Mh
22、z;在硬件上驗證設(shè)計的代碼時,需要通過ChipScope來觀測AD9021輸出的信號,選擇40MHz的時鐘信號作為觸發(fā)信號,要觀測的信號如圖2.7所示。圖2.7 ChipScope觀測的內(nèi)部信號設(shè)計結(jié)果實驗二的仿真波形如圖2.8所示。圖2.8 仿真波形使用ChipScope觀測到AD9021輸出信號如圖2.9所示。圖2.9 ChipScope觀測到的波形實際中,用示波器觀測到的波形如圖2.10所示。圖2.10 示波器觀測到的波形設(shè)計總結(jié)這次實驗中在使用48MHz時鐘生成40MHz時鐘時用到了IP核的設(shè)計,在利用IP核進行時鐘分頻或倍頻時,得到的時鐘較為穩(wěn)定,不會出現(xiàn)時鐘抖動的問題,同時還用到了
23、元件例化的功能。此外,AD9021和AD9671時鐘頻率的選擇需要多注意,不然可能不會得到預(yù)期的結(jié)果。設(shè)計三 FPGA與DSP間的通信實驗要求 DSP通過其EMIF接口與FPGA通信,因此一般情況下DSP為主,F(xiàn)PGA為從設(shè)備。這樣就要在FPGA內(nèi)部(通過IPCore)構(gòu)造一個存儲設(shè)備或者邏輯接收電路,從而完成與DSP的通信實驗說明FPGA作為存儲器可以直接將其接口與DSP的EMIF連接,邏輯接收電路要通過EMIF相應(yīng)的接口信號來完成數(shù)據(jù)的接收與發(fā)送,另外EMIF寄存器的設(shè)置直接影響通信各方的時序。DM642 DSP通過EMIF與FPGA相連,將FPGA作為DSP的外設(shè)。設(shè)計平臺中,所使用的E
24、MIF接口信號包括:外部地址線EA3:22、數(shù)據(jù)線ED0:31和控制線,硬件電路的連接原理圖如圖3.1所示。圖3.1 DSP與FPGA的連接原理框圖因為DSP與FPGA之間并沒有時鐘的連接,所以它們的操作是異步的,即FPGA作為DSP的異步外設(shè)。DSP的EMIF使用其內(nèi)部的時鐘來協(xié)調(diào)接口信號的時序,但FPGA只根據(jù)DSP傳輸過來的信號進行響應(yīng),不考慮任何時鐘。從圖3.1 可知,DM642 的EMIF 接口的地址線、數(shù)據(jù)線和控制線1 首先通過74LVT16245(U36U39)進行第一級緩沖,得到對應(yīng)的地址線DC_A3:22、數(shù)據(jù)線DC_D0:31和控制線2,再經(jīng)過74LVCH162245(U7
25、1U74)進行第二級緩沖,得到連接FPGA的地址線XDC_A3:22、數(shù)據(jù)線XDC_D0:31和控制線3。由于數(shù)據(jù)線是雙向傳輸,地址線和控制線是單向傳輸,所以緩沖器的控制信號也是不同的。用于地址總線和控制總線的緩沖器(U37、U39、U72、74)的OE#管腳和DIR管腳接固定電位,保證單一的傳輸方向。而用于數(shù)據(jù)總線的緩沖器(U36、U38、U71、73)的OE#管腳和DIR管腳由CPLD EPM7032AETC44(U42)給出的信號控制。設(shè)計方案因為實驗設(shè)計的是DSP與FPGA之間的通信,故本次實驗分為FPGA設(shè)計和DSP設(shè)計,具體設(shè)計如下。1. FPGA設(shè)計FPGA設(shè)計主要是在FPGA中
26、設(shè)計一個作為DSP訪問的外部存儲器。首先要弄清楚需要哪幾種輸入輸出信號,這里在FPGA中設(shè)計一個具有16個存儲單元而且數(shù)據(jù)寬度為16bit的存儲器,16個存儲單元需要4根地址線(0000.1111),16位數(shù)據(jù)寬度需要16根數(shù)據(jù)線,此外還需要片選信號、讀信號和寫信號各1位,這樣總共占用23根連線。此外需要注意的是,在FPGA中設(shè)計的存儲器的“讀”信號一定要來自DSP的讀控制信號對應(yīng)的管腳上。為了在DSP中判斷FPGA中的存儲器是否能正確寫入,在FPGA寫代碼模塊中將每個讀出的數(shù)據(jù)與16位二進制數(shù)據(jù)1111111100000000相加,然后再觀察DSP讀出的數(shù)據(jù)是否作了上述的改變。FPGA中數(shù)據(jù)
27、讀寫的進程代碼如下:process(addr,cs, rd, wr)beginif cs='0' thenif wr='0' thencase addr iswhen "0000"=> d0<=data;when "0001"=> d1<=data;when "0010"=> d2<=data;when "0011"=> d3<=data;when "0100"=> d4<=data;when "
28、;0101"=> d5<=data;when "0110"=> d6<=data;when "0111"=> d7<=data;when "1000"=> d8<=data;when "1001"=> d9<=data;when "1010"=> da<=data;when "1011"=> db<=data;when "1100"=> dc<=dat
29、a;when "1101"=> dd<=data;when "1110"=> de<=data;when "1111"=> df<=data;when others=> null;end case;elsif rd='0' thencase addr iswhen "0000"=> data<=d0+"1111111100000000"when "0001"=> data<=d1+"1
30、111111100000000"when "0010"=> data<=d2+"1111111100000000"when "0011"=> data<=d3+"1111111100000000"when "0100"=> data<=d4+"1111111100000000"when "0101"=> data<=d5+"1111111100000000"when "
31、0110"=> data<=d6+"1111111100000000"when "0111"=> data<=d7+"1111111100000000"when "1000"=> data<=d8+"1111111100000000"when "1001"=> data<=d9+"1111111100000000"when "1010"=> data<=da+&quo
32、t;1111111100000000"when "1011"=> data<=db+"1111111100000000"when "1100"=> data<=dc+"1111111100000000"when "1101"=> data<=dd+"1111111100000000"when "1110"=> data<=de+"1111111100000000"when &qu
33、ot;1111"=> data<=df+"1111111100000000"when others=> null;end case;elsedata<="ZZZZZZZZZZZZZZZZ"end if;else data<="ZZZZZZZZZZZZZZZZ"end if; end process;2. DSP設(shè)計DSP通過EMIF接口對FPGA中的存儲器進行訪問。從硬件電路的連接關(guān)系可知,F(xiàn)PGA處于DSP的CE2空間,其首地址為0xA0000000.通過向改地址寫入20位數(shù)據(jù)(低4位為地址,
34、高16位為數(shù)據(jù)),可實現(xiàn)DSP向FPGA中存儲器寫入的操作。讀數(shù)據(jù)時,先給出地址(低4位),然后再讀出。首先要設(shè)置DSP相關(guān)寄存器,根據(jù)DSP中控制寄存器的地址分配,對相應(yīng)的控制寄存器作如下定義:#define EMIFA_GBLCTL 0X01800000 /EMIFA 全局控制#define EMIFA_CE2CTL 0X01800010 /EMIFA CE2空間控制寄存器#define EMIFA_CE2SCE 0X01800050 /EMIFA CE2輔助控制寄存器#define ADDRESS 0XA0000000 /選擇CE2:0xA0000000 根據(jù)DSP EMIFA手冊,在程
35、序中可以對以上控制寄存器進行如下配置:*(volatile u32*)EMIFA_GBLCTL=(u32)0x00010020;/把clk2打開*(volatile u32*)EMIFA_CE2CTL=(u32)0XFFFFFF13;/16位異步對應(yīng)通信2*(volatile u32*)EMIFA_CE2SCE=(u32)0x00000002;寫函數(shù)代碼如下,每次向存儲器中寫入一個16bit數(shù)據(jù),總共寫16次,第一次寫入0x00ff,然后每次寫入的數(shù)據(jù)是前一個數(shù)據(jù)減去0x0010,這樣寫入存儲器中的數(shù)據(jù)依次為:0x00ff、0x00ef、0x00df、0x00cf、0x00bf、0x00af、
36、0x009f、0x008f、0x007f、0x006f、0x005f、0x004f、0x003f、0x002f、0x001f和0x000f,每寫一次數(shù)據(jù)要加一個適當?shù)难訒r,以便進行下一次寫數(shù)據(jù)。void WRITE()int i;unsigned short data=0x00ff;for(i=0;i<16;i+)printf("%x ",data);*(volatile unsigned int short *)ADDRESS+i)=data;data=data-0x0010;delay(100000);printf("n");讀函數(shù)代碼如下,從
37、首地址開始讀數(shù)據(jù),總共讀16次。void READ()int i,temp;for(i=0;i<16;i+)temp=*(volatile unsigned int short *)ADDRESS+i);delay(100000);printf("%x ",temp);printf("n");main函數(shù)代碼如下,主函數(shù)主要包括三個模塊:DSP相關(guān)寄存器設(shè)置、寫數(shù)據(jù)函數(shù)和讀數(shù)據(jù)函數(shù)。void main()EMIFA();/相關(guān)寄存器設(shè)置printf("The 16 numbers written in fpga are :n "
38、);WRITE();/寫數(shù)據(jù)printf("The 16 numbers read from fpga are :n ");READ();/讀數(shù)據(jù)設(shè)計結(jié)果設(shè)計結(jié)果主要包括FPGA仿真波形和DSP運行結(jié)果。FPGA仿真波形如圖3.2和圖3.3所示:圖3.2 寫數(shù)據(jù)仿真波形圖3.3 讀數(shù)據(jù)仿真波形DSP寫入的數(shù)據(jù)依次為0x00ff、0x00ef、0x00df、0x00cf、0x00bf、0x00af、0x009f、0x008f、0x007f、0x006f、0x005f、0x004f、0x003f、0x002f、0x001f和0x000f;DSP讀出的數(shù)據(jù)應(yīng)該依次為0xffff、
39、0xffef、0xffdf、0xffcf、0xffbf、0xffaf、0xff9f、0xff8f、0xff7f、0xff6f、0xff5f、0xff4f、0xff3f、0xff2f、0xff1f和0xff0f。DSP運行的結(jié)果如圖3.4所示:圖3.4 DSP運行結(jié)果設(shè)計總結(jié)這次實驗要設(shè)計DSP與FPGA的通信,在設(shè)計中通過DSP來訪問在FPGA中設(shè)計的存儲器,進行寫數(shù)據(jù)和讀數(shù)據(jù)操作。在DSP設(shè)計中,每次寫完數(shù)據(jù)或讀完數(shù)據(jù)都要加一定時間的延時,以保證DSP讀寫的正確進行。設(shè)計四 DSP訪問SDRAM實驗要求 設(shè)置DSP的相關(guān)控制寄存器,完成DSP訪問SDRAM的時序要求 編寫DSP(C語言),實
40、現(xiàn)對SDRAM的讀寫,并把寫入的數(shù)據(jù)與讀出的數(shù)據(jù)進行比較,來判斷讀寫數(shù)據(jù)的正確與否 測試SDRAM訪問的速度實驗說明DM642 DSP可以通過EMIF接口與SDRAM進行無縫連接,硬件系統(tǒng)中用到的SDRAM是MT48LC4M32B2,它是一種高速CMOS、PC100功能的動態(tài)隨機存儲器,容量為128Mbit。該SDRAM的內(nèi)部有四塊DRAM,每塊容量為32Mbit,它們公用一個同步接口(所有信號都在時鐘信號CLK的上升沿寄存)。設(shè)計平臺中,所使用的 EMIF 接口信號包括:外部地址線EA3:16、數(shù)據(jù)線ED0:63和控制線,硬件電路的連接原理圖如圖4.1所示。從圖中可以看到,從DSP 發(fā)出的地
41、址線、數(shù)據(jù)線和控制線直接連接到SDRAM的對應(yīng)管腳上,中間沒有緩沖器。SDRAM放置在DSP EMIF的CE0空間。 TEA3.16 控制線 TBE0#TBE3#DSP DM642 EMIF接口 TBE4#TBE7# TED0.63A0.11 DQ0.31BA0,BA1U34DQM0.4A0.11 BA0,BA1 DQ0.31U35DQM0.4圖4.1 DSP與SDRAM的連接框圖設(shè)計方案在DSP中,針對SDRAM的程序設(shè)計主要是完成對SDRAM的讀寫操作。這樣可以先向SDRAM中寫入數(shù)據(jù),然后再讀出這些數(shù)據(jù),通過對比寫入和寫出的數(shù)據(jù)來判斷DSP能否正確地訪問SDRAM。此外,可以測試DSP對
42、SDRAM的訪問速度。在編寫C語音程序之前,需要先編寫cmd文件,cmd文件的內(nèi)容如下:-c-x-stack 0x0600-heap 0x0600MEMORY IRAM : o = 0x00000000 l = 0x00100000SECTIONS .text > IRAM .stack > IRAM .bss > IRAM .cinit > IRAM .cio > IRAM .const > IRAM .data > IRAM .switch > IRAM .system > IRAM .far > IRAM進行程序設(shè)計時,首先要對
43、SDRAM訪問的幾個相關(guān)寄存器進行配置,這些寄存器包括EMIFA全局控制器、CE0控制寄存器、CE0第二控制寄存器、SDRAM控制寄存器、SD刷新控制寄存器和SD擴展寄存器。根據(jù)DSP中控制寄存器的地址分配,對相應(yīng)的控制寄存器作如下定義:#define EMIFA_GBLCTL 0X01800000 /EMIFA全局控制器#define EMIFA_CE0CTL 0X01800008 /CE0控制寄存器#define EMIFA_SDCTL 0X01800018 /SDRAM控制寄存器#define EMIFA_SDTIM 0X0180001C /SDRAM刷新控制寄存器#define EMI
44、FA_SDEXT 0X01800020 /SDRAM擴展寄存器#define address 0x80000000 /選擇CE0的首地址根據(jù)DSP EMIFA手冊,在程序中可以對以上控制寄存器進行如下配置:*(volatile u32*)EMIFA_GBLCTL=(u32)0x00000020;*(volatile u32*)EMIFA_CE0CTL=(u32)0xFFFFFF33;*(volatile u32*)EMIFA_SDCTL =(u32)0x57119000;*(volatile u32*)EMIFA_SDTIM =(u32)0x00000446;*(volatile u32*)E
45、MIFA_SDEXT =(u32)0x0005452B;因為已經(jīng)對以上控制寄存器進行了命名,所以配置了這些控制寄存器之后,SDRAM 就可以像 DSP 內(nèi)部存儲器一樣進行讀寫了。讀寫 SDRAM 時,可以采用指針,對某個具體地址進行賦值,然后再從相同的地址讀出數(shù)據(jù)進行對比。SDRAM寫函數(shù)每次把int型的變量i(32位)寫入到地址(volatile u32 *)address + i中,總共寫入32768個32位的數(shù)據(jù),即1Mbit,這樣的設(shè)計方便在讀數(shù)據(jù)時對數(shù)據(jù)讀寫是否正確進行判斷。SDRAM寫函數(shù)代碼如下:SDRAM讀函數(shù)執(zhí)行時,每讀一個數(shù)據(jù)都會對其進行判斷,如果讀寫不正確,就讓counter加1,程序結(jié)束后counter的值就是讀寫錯誤數(shù)據(jù)的總量。但在測試讀速度時需要去掉讀寫判斷代碼,以保證測得的速度準確。SDRAM讀函數(shù)代碼如下:void Write_sdram() int i; for(i =0;i<32768;i+) *(volatile u32 *)address + i) = i;void Read_sdram() int j,k; fo
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025公司與員工解除勞動合同范本
- 2024年春八年級生物下冊 23.1 生物的生存依賴一定的環(huán)境說課稿 (新版)北師大版
- 2025寫字樓租賃合同寫字樓租賃合同模板
- Unit 6 Jobs Lesson 6 story time.(說課稿)-2024-2025學(xué)年人教新起點版英語四年級上冊
- 7 《包身工》 說課稿 2024-2025學(xué)年統(tǒng)編版高中語文選擇性必修中冊
- Unit5 What do they do(說課稿)-2024-2025學(xué)年譯林版(三起)英語五年級上冊
- 西班牙瓦鋪貼施工方案
- 迎春燈飾施工方案
- 20美麗的小興安嶺說課稿-2024-2025學(xué)年三年級上冊語文統(tǒng)編版
- 12《富起來到強起來》(說課稿)統(tǒng)編版道德與法治五年級下冊
- 一起重新構(gòu)想我們的未來:為教育打造新的社會契約
- GB/T 4214.2-2020家用和類似用途電器噪聲測試方法真空吸塵器的特殊要求
- GB/T 22482-2008水文情報預(yù)報規(guī)范
- 蔬菜采購項目投標書
- 肩周炎康復(fù)護理
- 2022年安徽管子文化旅游集團有限公司招聘筆試試題及答案解析
- SAPPM設(shè)備管理解決方案
- Q-HN-1-0000.08.004《風(fēng)力發(fā)電場電能質(zhì)量監(jiān)督技術(shù)標準》
- 3人-機-環(huán)-管理本質(zhì)安全化措施課件
- 慶陽煤炭資源開發(fā)調(diào)研報告
- 橋博常見問題
評論
0/150
提交評論