cpld數(shù)字系統(tǒng)設(shè)計_第1頁
cpld數(shù)字系統(tǒng)設(shè)計_第2頁
cpld數(shù)字系統(tǒng)設(shè)計_第3頁
cpld數(shù)字系統(tǒng)設(shè)計_第4頁
cpld數(shù)字系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩90頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、基于基于PLD的數(shù)字系統(tǒng)設(shè)計的數(shù)字系統(tǒng)設(shè)計Page 21.PLD的分類的分類集成度集成度低密度:低密度: 高密度:高密度:結(jié)構(gòu)特點(diǎn)結(jié)構(gòu)特點(diǎn)陣列型的陣列型的PLD器件(與或陣列)器件(與或陣列)單元型的單元型的PLD器件(邏輯單元)器件(邏輯單元)編程特性編程特性nGAL結(jié)構(gòu)與PAL類 似:與陣列可編程改寫;n與PAL的不同的是:PAL的輸出口為定型為緩沖器/驅(qū)動器,GAL的輸出單元為輸出邏輯宏單元(OLMC),其結(jié)構(gòu)和功能可由用戶改寫。Page 32、PLD的結(jié)構(gòu):的結(jié)構(gòu):(1) PLD的基本結(jié)構(gòu)的基本結(jié)構(gòu)輸入緩沖電路輸出緩沖電路或陣列與陣列Page 4(2)基于乘積項的CPLD的基本結(jié)構(gòu)的基

2、本結(jié)構(gòu)這種這種CPLD主要包括三塊結(jié)構(gòu):主要包括三塊結(jié)構(gòu):n 邏輯陣列塊(邏輯陣列塊(LAB):由若干個宏單元():由若干個宏單元(Marocell) 組成,是組成,是CPLD內(nèi)部最基本的結(jié)構(gòu)內(nèi)部最基本的結(jié)構(gòu)n 可編程連線(可編程連線(PIA)n I/O控制塊控制塊Page 5Page 6Page 7CPLD中的宏單元中的宏單元Page 8(3)基于查找表(LUT)的FPGA的結(jié)構(gòu) A: 查找表查找表( Look-Up-Table)例:例:LUT實(shí)現(xiàn)的四輸入與門實(shí)現(xiàn)的四輸入與門實(shí)際邏輯電路實(shí)際邏輯電路LUT的實(shí)現(xiàn)方式的實(shí)現(xiàn)方式 a,b,c,d 輸入輸入邏輯輸出邏輯輸出地址地址RAM中存儲的內(nèi)容

3、中存儲的內(nèi)容00000000000001000010.0.01111111111n 本質(zhì)上就是一個本質(zhì)上就是一個RAMn FPGA中多使用中多使用4輸入輸入的的LUT,所以每一個,所以每一個LUT可以看成一個有可以看成一個有4位地址位地址線的線的16x1的的RAMPage 90000010100000101輸入 A 輸入 B 輸入C 輸入D 查找表輸出實(shí)際的16x1RAM結(jié)構(gòu)多路選擇器Page 10FLEX10K系列器件:系列器件:Page 11LAB:Page 12邏輯單元邏輯單元LEPage 13進(jìn)位鏈連通進(jìn)位鏈連通LAB中的所有中的所有LEPage 14兩種不同的級聯(lián)方式兩種不同的級聯(lián)方

4、式Page 15連續(xù)布線 ( Altera 基于查找表(LUT)的 FPGA )Page 16FPGA/CPLD生產(chǎn)商生產(chǎn)商 Page 17LATTICEVANTIS(AMD)ispLSI系列:系列:1K、2K、3K、5K、8K ispLSI1016 、ispLSI2032、 ispLSI1032E、ispLSI3256A MACH系列系列 ispPAC系列:系列: 其他其他PLD公司:公司:ACTEL公司:公司: ACT1/2/3、40MXATMEL公司:公司:ATF1500AS系列、系列、40MXCYPRESS公司公司QUIKLOGIC公司公司 CPLD SO MUCH IC!FPGA C

5、PLDPage 183、CPLD和和FPGA的性能對比的性能對比(1) 適合結(jié)構(gòu)適合結(jié)構(gòu) CPLD是是 “邏輯豐富邏輯豐富” 型的型的,更適合完成各種算法和組合更適合完成各種算法和組合邏輯邏輯, FPGA 是是 “時序豐富時序豐富” 型的型的,更適合于完成時序邏更適合于完成時序邏輯。輯。 原因:原因: CPLD 的一個宏單元可以分解十幾個甚至的一個宏單元可以分解十幾個甚至 2030 個組合個組合邏輯輸入。而邏輯輸入。而 FPGA 的的1 個個LUT只能處理只能處理4 輸入的組合邏輸入的組合邏輯輯CPLD 適合用于設(shè)計譯碼等復(fù)雜組合邏輯。但適合用于設(shè)計譯碼等復(fù)雜組合邏輯。但 FPGA 的制造工藝

6、確定了的制造工藝確定了 FPGA 芯片中包含的芯片中包含的LUT和觸發(fā)器的和觸發(fā)器的數(shù)量非常多數(shù)量非常多,集成度更高集成度更高,而而 PLD 一般只能做到一般只能做到512 個邏輯個邏輯單元單元,所以如果設(shè)計中使用到大量觸發(fā)器所以如果設(shè)計中使用到大量觸發(fā)器,例如設(shè)計一個復(fù)例如設(shè)計一個復(fù)雜的時序邏輯雜的時序邏輯,就使用就使用 FPGA。Page 19(2) 運(yùn)行速度運(yùn)行速度 CPLD優(yōu)于優(yōu)于 FPGA。 因?yàn)橐驗(yàn)? CPLD 是邏輯塊級編程是邏輯塊級編程,且其邏輯塊互連是集總式的且其邏輯塊互連是集總式的, CPLD 通過修改具有固定內(nèi)連電路的邏輯功能來編程通過修改具有固定內(nèi)連電路的邏輯功能來編程

7、;而而 FPGA 是門級編程是門級編程,且且LAB 之間是采用分布式互連之間是采用分布式互連, FPGA 主要通過改變內(nèi)部連線的布線來編程。主要通過改變內(nèi)部連線的布線來編程。 同時同時,由于由于 CPLD 有專用連線每個宏單元相連有專用連線每個宏單元相連,信號到每個信號到每個宏單元的延時相同并且延時最短。因此宏單元的延時相同并且延時最短。因此CPLD 比比 FPGA 有較大的時間可預(yù)測性有較大的時間可預(yù)測性,產(chǎn)品可以給出引腳到引腳的最大產(chǎn)品可以給出引腳到引腳的最大延遲時間。延遲時間。Page 20(3) 編程方式編程方式n 目前的目前的CPLD主要是基于主要是基于 E2PROM或或 FLASH

8、存儲器編程存儲器編程,編程次數(shù)達(dá)編程次數(shù)達(dá) 1 萬次萬次,其優(yōu)點(diǎn)是在系統(tǒng)斷電后其優(yōu)點(diǎn)是在系統(tǒng)斷電后,編程信息不丟編程信息不丟失失,且無需外部存儲器芯片且無需外部存儲器芯片,使用簡單。使用簡單。CPLD又可分為在又可分為在編程器上編程和在系統(tǒng)編程編程器上編程和在系統(tǒng)編程( In System Programma2ble , ISP)兩種。兩種。ISP器件的優(yōu)點(diǎn)是不需要編器件的優(yōu)點(diǎn)是不需要編程器程器,可先將器件裝焊于印制板可先將器件裝焊于印制板,再經(jīng)過編程電纜進(jìn)行編程再經(jīng)過編程電纜進(jìn)行編程,編程、編程、 調(diào)試和維護(hù)都很方便。調(diào)試和維護(hù)都很方便。n FPGA大部分是基于大部分是基于 SRAM編程其優(yōu)

9、點(diǎn)是可進(jìn)行任意次數(shù)編程其優(yōu)點(diǎn)是可進(jìn)行任意次數(shù)的編程的編程,并可在工作中快速編程并可在工作中快速編程,實(shí)現(xiàn)板級和系統(tǒng)級的動態(tài)實(shí)現(xiàn)板級和系統(tǒng)級的動態(tài)配置配置,因此可稱為可重配置硬件。其缺點(diǎn)是編程信息需存因此可稱為可重配置硬件。其缺點(diǎn)是編程信息需存放在外部存儲器上放在外部存儲器上,每次上電時每次上電時,需從器件的外部存儲器或需從器件的外部存儲器或計算機(jī)中將編程數(shù)據(jù)寫入計算機(jī)中將編程數(shù)據(jù)寫入 SRAM中中,使用方法復(fù)雜使用方法復(fù)雜,且編程且編程數(shù)據(jù)信息在系統(tǒng)斷電時丟失。數(shù)據(jù)信息在系統(tǒng)斷電時丟失。Page 214、 CPLD和和FPGA的編程與配置的編程與配置 根據(jù)器件的不同結(jié)構(gòu)根據(jù)器件的不同結(jié)構(gòu) ,基

10、于電可擦除存儲單元的基于電可擦除存儲單元的 EEPROM或或 Flash技技術(shù)的術(shù)的 CPLD的在系統(tǒng)下載稱為的在系統(tǒng)下載稱為編程編程( Program) ,而把基于而把基于 SRAM 查找查找表結(jié)構(gòu)的表結(jié)構(gòu)的FPGA的在系統(tǒng)下載稱為的在系統(tǒng)下載稱為配置配置(Configure)Page 22此接口既可作編此接口既可作編程下載口,也可作程下載口,也可作JTAG接口接口(1) ALTERA 的的 ByteBlaster并行下載方式并行下載方式Page 23ByteBlaster支持兩種數(shù)據(jù)下載模式支持兩種數(shù)據(jù)下載模式: n被動串行同步被動串行同步(PS)方式方式 :可對可對 ACEX1K, F

11、LEX10K,F LEX6000和和 F LEX8000 等器件進(jìn)行配置等器件進(jìn)行配置;nJTAG方式方式 :具有電路邊界掃描測試功能??蓪哂须娐愤吔鐠呙铚y試功能??蓪?FLEX10K 系列器件系列器件進(jìn)行配置以及對進(jìn)行配置以及對MAX9000 , MAX7000S 和和 MAX7000A 等系列器件等系列器件進(jìn)行在線編程。下載時再結(jié)合進(jìn)行在線編程。下載時再結(jié)合 Altera 提供的仿真軟件提供的仿真軟件Max + plus II或者或者 Quartus 就可以進(jìn)行編程與配置。就可以進(jìn)行編程與配置。Page 24ISP功能提高設(shè)計和應(yīng)用的靈活性功能提高設(shè)計和應(yīng)用的靈活性n 減少對器件的觸減少

12、對器件的觸摸和損傷摸和損傷n 不計較器件的封不計較器件的封裝形式裝形式n 允許一般的存儲允許一般的存儲n 樣機(jī)制造方便樣機(jī)制造方便n 支持生產(chǎn)和測試支持生產(chǎn)和測試流程中的修改流程中的修改n 允許現(xiàn)場硬件升級允許現(xiàn)場硬件升級n 迅速方便地提升功迅速方便地提升功能能未編程前先焊接安裝未編程前先焊接安裝系統(tǒng)內(nèi)編程系統(tǒng)內(nèi)編程-ISP在系統(tǒng)現(xiàn)場重在系統(tǒng)現(xiàn)場重編程修改編程修改Page 25ByteBlaster程序下載接口程序下載接口n DCLK(時鐘信號時鐘信號) n CONF DONE (配置控制配置控制) ,n nCONFIG(配置控制配置控制) ,n nSTATUS(配置狀態(tài)配置狀態(tài)) ,n DA

13、TA0(到器件的數(shù)據(jù)到器件的數(shù)據(jù))n TCK(時鐘信號時鐘信號) ;nTDO(來自器件的數(shù)據(jù)來自器件的數(shù)據(jù)) ;nTMS (JTAG狀態(tài)機(jī)控制狀態(tài)機(jī)控制) ;nTDI(到器件的數(shù)據(jù)到器件的數(shù)據(jù))Page 26JTAG模式下對模式下對CPLD(MAX7000AE)器件進(jìn)行編程器件進(jìn)行編程Page 27多多CPLD的的ISP方式編程方式編程Page 28PS方式下對方式下對 FLEX10K器件進(jìn)行配置器件進(jìn)行配置電纜電纜VCC為為+5V,不會對不會對3.3V被編被編程器件造成損壞程器件造成損壞Page 29多多FPGA芯片配置電路芯片配置電路Page 30(2) 用專用配置器件配置用專用配置器件配

14、置 FPGAFPGA 器件有兩種配置下載方式:n 主動配置方式: 由 FPG A器件引導(dǎo)配置操作過程 ,它控制著外部存儲器和初始化過程n 被動配置方式: 由外部計算機(jī)或控制器控制配置過程。n FPG A 在正常工作時 ,它的配置數(shù)據(jù)存儲在 SRAM中。由于 SRAM的易失性 ,每次加電時 ,配置數(shù)據(jù)都必須重新下載。n 實(shí)驗(yàn)系統(tǒng)中 ,通常采用外部計算機(jī)或控制器進(jìn)行調(diào)試 , 可使用被動配置方式。當(dāng)數(shù)字系統(tǒng)設(shè)計完畢需要正式投入使用時 , FPG A將主動從外圍專用存儲芯片中獲得配置數(shù)據(jù)。FPG A 上電自動配置可采用EPROM,專用的配置器件或 FlashROM等等。Page 31專用專用配置器件配

15、置專用專用配置器件配置 FPG APage 32(3) 單片機(jī)配置單片機(jī)配置FPGAPage 33PS模式配置時序模式配置時序 2us60us5sPage 345、設(shè)計實(shí)例:多路音頻采集系統(tǒng)、設(shè)計實(shí)例:多路音頻采集系統(tǒng)(1) 設(shè)計要求:設(shè)計要求:n 四路模擬音源的同時實(shí)時采集。模擬音源可以是麥克風(fēng)輸出或其它音四路模擬音源的同時實(shí)時采集。模擬音源可以是麥克風(fēng)輸出或其它音頻設(shè)備的模擬音頻輸出。頻設(shè)備的模擬音頻輸出。n 模擬信號的數(shù)字化。系統(tǒng)先將模擬信號數(shù)字化后,再通過網(wǎng)絡(luò)發(fā)送。模擬信號的數(shù)字化。系統(tǒng)先將模擬信號數(shù)字化后,再通過網(wǎng)絡(luò)發(fā)送。n 采樣率:采樣率:44.1kHz。n 采樣精度:采樣精度:1

16、6位。位。n AGC(自動增益控制自動增益控制)功能。功能。n 提供至少提供至少1KB數(shù)據(jù)緩沖。數(shù)據(jù)緩沖。Page 35(2) 系統(tǒng)設(shè)計及方案選擇系統(tǒng)設(shè)計及方案選擇Page 36需考慮的因素需考慮的因素n 前置放大器前置放大器(AIC31)的配置問題;的配置問題;(MCU)n A/D變換器的時鐘供給問題;變換器的時鐘供給問題;(CPLD)n 數(shù)據(jù)存儲方式:數(shù)據(jù)存儲方式: Big endian: 低字節(jié)放低地址,高字節(jié)放高地址。直觀的字節(jié)序低字節(jié)放低地址,高字節(jié)放高地址。直觀的字節(jié)序 Little Endian:符合人類思維的字節(jié)序:符合人類思維的字節(jié)序n 數(shù)據(jù)緩沖區(qū)的大小數(shù)據(jù)緩沖區(qū)的大小(4x

17、1K)及緩沖方案:及緩沖方案: FIFO:數(shù)據(jù)從一側(cè)流入,另一側(cè)流出。:數(shù)據(jù)從一側(cè)流入,另一側(cè)流出。FIFO 具有兩套數(shù)據(jù)線而無地具有兩套數(shù)據(jù)線而無地址線。址線。 高速高速SRAM切換切換:用兩片:用兩片SRAM構(gòu)成,在某一時刻,構(gòu)成,在某一時刻, CPLD和和DS80C400分時輪流對讀寫??偩€切換電路復(fù)雜。分時輪流對讀寫。總線切換電路復(fù)雜。 雙口雙口 RAM :雙口:雙口 RAM 具有兩套獨(dú)立的數(shù)據(jù)、地址和控制總線,可具有兩套獨(dú)立的數(shù)據(jù)、地址和控制總線,可從兩個端口同時讀寫而互不干擾從兩個端口同時讀寫而互不干擾 Page 37n 地址分配問題地址分配問題Page 38CPLD功能塊劃分:功

18、能塊劃分:n檢測來自微控制器的啟動/停止信號;n產(chǎn)生對微控制器的中斷信號;n并控制狀態(tài)LED。n為AIC31提供時鐘信號,n接收自AIC31的串行數(shù)字音頻數(shù)據(jù),n音頻信號的串并轉(zhuǎn)換,n并行音頻數(shù)據(jù)的RAM 存儲。 n 產(chǎn)生寫產(chǎn)生寫RAM的時序,的時序,n 生成寫地址;生成寫地址;n 接收接收ADC接口傳送的數(shù)據(jù),并執(zhí)行接口傳送的數(shù)據(jù),并執(zhí)行RAM寫操作寫操作Page 39(3) CPLD接口設(shè)計接口設(shè)計n 微控制器接口模塊微控制器接口模塊Page 40名稱方向描述clkInClock。時鐘輸入。(22.5792MHz,即每個clk周期約為44ns )resetInReset。復(fù)位信號,低電平有

19、效。fullIn高電平有效。來自RAM控制模塊,每個緩沖周期末,該信號有效一個clk周期。st_ucInStart。啟動/停止信號,低電平:啟動;高電平:停止。irq_ucOutInterrupt request。中斷請求信號,低有效。當(dāng)檢測到full信號的上升沿時,產(chǎn)生中斷,通知網(wǎng)絡(luò)微處理器讀取音頻數(shù)據(jù)并發(fā)送到網(wǎng)絡(luò)。ledOutLED狀態(tài)控制信號。當(dāng)系統(tǒng)處于采集狀態(tài)時,LED閃爍,否則,常亮。System enable。系統(tǒng)使能信號,高有效。當(dāng)系統(tǒng)處于工作狀態(tài)時,sys_en有效。Page 41ADC 接口模塊接口模塊n AIC31的時序的時序115 162321116153Left cha

20、nnelRight channelWCLKBCLKSDMSBLSB MSBLSBPage 42接口圖接口圖Page 43端口描述端口描述名稱方向描述clkInputClock。時鐘輸入。resetInputReset。復(fù)位信號,低電平有效。sys_enInputSystem enable。系統(tǒng)使能信號,高有效。mclkOutput Main clock。 AIC31工作的主時鐘,與clk同頻bclkOutput Bit clock。向AIC31提供的串行數(shù)字音頻接口的位時鐘,由CPLD將clk 16分頻得到。 wclkOutput Word clock。向AIC31提供的串行數(shù)字音頻接口的字節(jié)

21、選時鐘,選擇輸出左聲道數(shù)據(jù)還是右聲道數(shù)據(jù)。由CPLD將clk 512分頻得到。Page 44名稱方向描述sd0InputSerial data 0。AIC31的串行數(shù)字音頻數(shù)據(jù)。sd1InputSerial data1。AIC31的串行數(shù)字音頻數(shù)據(jù)。dsOutput Data valid strobe。數(shù)據(jù)有效指示信號,上升沿有效。hlbOutput High/ low byte。高/低字節(jié)指示信號,0為低字節(jié),1為高字節(jié)。lrcOutput Left/right channel。左/右聲道指示信號,0為左聲道,1為右聲道。data07:0Output 并行音頻數(shù)據(jù)。data17:0Outpu

22、t 并行音頻數(shù)據(jù)。Page 45RAM控制模塊控制模塊(ram_control)clkdsce_lwe_laddr_ldata_ldata0data1RAM寫時序?qū)憰r序Page 46名稱方向描述clkInputClock。時鐘輸入。resetInputReset。復(fù)位信號,低電平有效。dsInputData valid strobe。數(shù)據(jù)有效指示信號,上升沿有效。hlbInputHigh/ low byte。高/低字節(jié)指示信號,0為低字節(jié),1為高字節(jié)。lrcInputLeft/right channel。左/右聲道指示信號,0為左聲道,1為右聲道。data07:0Input并行音頻數(shù)據(jù)。dat

23、a17:0Input并行音頻數(shù)據(jù)。Page 47名稱方向描述ce_lOutputChip enable。雙口RAM左端口片選信號。oe_lOutputOutput enable。雙口RAM左端口讀選通信號。we_lOutputWrite enable。雙口RAM左端口寫選通信號。addr_l12:0OutputAddress bus。雙口RAM左端口地址總線。data_l7:0In/OutData bus。雙口RAM左端口數(shù)據(jù)總線。addr12_rOutputAddress bus。雙口RAM右端口地址線A12。fullOutput緩沖區(qū)寫滿指示信號。高電平有效。Page 48Page 49P

24、age 50(4) 程序設(shè)計程序設(shè)計A: uc_interface: 模塊功能(每個功能對應(yīng)一個線程)模塊功能(每個功能對應(yīng)一個線程)n 延時延時st_ucn 延遲延遲full信號信號n 生成生成irq _uc 信號信號n 生成生成sys_en信號信號n 生成生成led工作指示信號工作指示信號Page 51library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity uc_interface is Port ( reset : in std

25、_logic; clk : in std_logic; st_uc : in std_logic; sys_en : out std_logic; full : in std_logic; irq _uc : out std_logic; led: out sta_logic; ) end ad_interface;architecture Behavioral of ad_interface is此處定義信號此處定義信號 常量常量beginPage 52延時延時st_ucst_ucclkst_d1st_d2st_d0CPLDst_d0st_d1st_d2 &st_d0st_d1st_d2 1

26、st_orst_andPage 53process (reset , clk ) -延時延時 st_ucbegin if reset = RESET_ACTIVE then st_uc_d0 = 1; st_uc_d1 = 1; st_uc_d2 = 1; elseif clkevent and clk = 1 then st_uc_d0 = st_uc; st_uc_d1 = st_uc_d0; st_uc_d2 = st_uc_d1; endifend process;Page 54process ( reset , clk ) -產(chǎn)生 sys_enbegin if reset = RES

27、ET_ACTIVE then s_sys_en = 0; elseif clkevent and clk = 1 then if s_sys_en = 0 then if (st_uc_d0 or st_uc_d1 or st_uc_d2 ) = 0 then s_sys_en = 1 endif elseif s_sys_en = 1 then if ( st_uc_d0 and st_uc_d1 and st_uc_d2 ) = 1 then s_sys_en = 0 endif endif endifend process;Page 55process ( reset , clk ) -

28、延遲延遲full 信號信號begin if reset = RESET_ACTIVE then s_full_d0 = 0; s_full_d1 = 0;elseif clkevevt and clk = 1 then s_full_d0 = full; s_full_d1 = s_ full_d0 ;endifend process;Page 56process ( reset , clk ) -生成生成 irq _uc信號信號begin if reset = RESET_ACTIVE then irq _uc = not IRQ_ACTIVE;elseif clkevevt and clk

29、 = 1 then if (full or s_full_d0 or s_full_d1)= 1 then irq_uc = IRQ_ACTIVE; else irq_uc = not IRQ_ACTIVE; endifendifend process;Page 57process ( reset , clk ) -生成生成led 信號信號begin if s_sys_en = 0 then s_ledcnt 0);elseif clkevevt and clk = 1 then if full = 1 then s_ledcnt = s_ledcnt +1 ; endif;endifend

30、process;led = s_ledcnt ( LEDCNT_WIDTH-1) Page 58B: ad_interfaceentity ad_interface is Port ( reset : in std_logic; clk : in std_logic; sys_en : in std_logic; sd0 : in std_logic; sd1 : in std_logic; sck : out std_logic; bck : out std_logic; lrck : out std_logic; ds : out std_logic; - data valid stobe

31、, high edge active hlb : out std_logic; lrc : out std_logic; data0 : out std_logic_vector(7 downto 0); data1 : out std_logic_vector(7 downto 0);end ad_interface;Page 59ADC工作特性:工作特性:115 162321116153Left channelRight channelWCLKBCLKSDMSBLSB MSBLSBPage 60n 時鐘產(chǎn)生器時鐘產(chǎn)生器clk_cnt(8)cnt_clrClkcounter&clktickc

32、lk_cnt(7)clk_cnt(6)clk_cnt(5)clk_cnt(4)clk_cnt(3)clk_cnt(2)clk_cnt(1)clk_cnt(0)wclkbclksys_en Page 61process(clk, reset) - process to generate the counter begin if reset=RESET_ACTIVE then s_cnt 0); elsif clkevent and clk=1 then s_cnt = s_cnt + 1; end if;end process;Page 62- Output the clock signal -

33、sck = clk;bck = s_cnt(3);lrck = s_cnt(8);Page 63process(reset,clk) - the process to generate the tick signal begin if reset=RESET_ACTIVE then tick = 0; elsif clkevent and clk=1 then if s_cnt(7 downto 0) = 01111111 then tick = 1; else tick = 0; end if; end if; end process;Page 64n hlb與與lrc信號的判斷信號的判斷L

34、eft channelRight channel1816 1816 1WCLKBCLKtickdshlblrcPage 65數(shù)據(jù)接收主狀態(tài)機(jī)數(shù)據(jù)接收主狀態(tài)機(jī)Idlewaitrecvrecvreset assertedreset negatedsys_en=1wclk ringing edgewclk rising edgesys_en=0Page 66音頻數(shù)據(jù)采集示意圖音頻數(shù)據(jù)采集示意圖Shift_reg1Buffer1Sd1Shift_enLoad_enData1Shift_reg0Buffer0Sd0Data0Page 67 The recieve maim state machine p

35、rocess(reset,clk)beginif reset = RESET_ACTIVE then state if sys_en = 1 thenstate = waitrecv; elsestate if s_lrck = 1 and s_lrck_d = 0 thenstate = recv; else state if s_lrck = 1 and s_lrck_d = 0 and sys_en = 0 then state = idle; elsestate state = idle; end case; end if;end process;Page 69the state ma

36、chine outputprocess(reset,clk) variable temp : std_logic_vector(2 downto 0); begin if reset = RESET_ACTIVE then s_ds = 0; s_hlb = 0; s_lrc = 0; s_data0 0); s_data1 0);Page 70elsif clkevent and clk = 1 then if state = recv then temp := s_lrck & s_lrck_d & s_tick; case temp is when 111 = - left channe

37、l,high byte s_ds = 1; s_data0 = s_shift_reg0; s_data1 = s_shift_reg1; s_hlb = 1; s_lrc - right channel,high byte s_ds = 1; s_data0 = s_shift_reg0; s_data1 = s_shift_reg1; s_hlb = 1; s_lrc - left channel,low byte s_ds = 1; s_data0 = s_shift_reg0; s_data1 = s_shift_reg1; s_hlb = 0; s_lrc - right chann

38、el,low byte s_ds = 1; s_data0 = s_shift_reg0; s_data1 = s_shift_reg1; s_hlb = 0; s_lrc s_ds = 0; s_data0 = s_data0; s_data1 = s_data1; s_hlb = s_hlb; s_lrc = s_lrc; end case;Page 73 else s_ds = 0; s_data0 0); s_data1 0); s_hlb = 0; s_lrc = 0; end if; end if;end process;Page 74 process(reset,clk) - p

39、rocess to sample sd0 and sd1 begin if reset = RESET_ACTIVE then s_sd0 = 0; s_sd1 = 0; elsif clkevent and clk = 1 then s_sd0 = sd0; s_sd1 SHIFT_WIDTH) port map( clk = clk, en = s_shift_reg_en, si = s_sd0, q = s_shift_reg0); shift_reg1_inst : shift generic map(SHIFT_WIDTH = SHIFT_WIDTH) port map(clk =

40、 clk, en = s_shift_reg_en, si = s_sd1, q = s_shift_reg1);Page 77shift reg enable controlprocess(state, s_bck, s_bck_d)begin if state = recv and s_bck = 1 and s_bck_d = 0 then s_shift_reg_en = 1; else s_shift_reg_en ADDRCNT_WIDTH) Port map ( clk =clk, clr =s_addrcnt_clr,-asynchronous clear,active hig

41、h en =s_addrcnt_en, q =s_addrcnt);Page 83寫寫RAM計數(shù)器計數(shù)器 wccnt_inst : cnt generic map (CNT_WIDTH = WCCNT_WIDTH) Port map ( clk =clk, clr=s_wccnt_clr,-asynchronous clear, active high en =s_wccnt_en, q =s_wccnt); Page 84process(pre_state,ds,s_ds,s_wccnt) begin case pre_state is when idle = if ds = 1 and s

42、_ds = 0 thennext_state = write0; elsenext_state if s_wccnt = WCCNT_MAX thennext_state = write1; elsenext_state if s_wccnt = WCCNT_MAX thennext_state = idle; elsenext_state next_state = idle; end case; end process;Page 86process(clk,reset)begin if reset = RESET_ACTIVE then pre_state = idle; elsif clkevent and clk = 1 then pre_state = next_state; end if;end process; Page 87計數(shù)器控制信號的生成計數(shù)器控制信號的生成 process(pre_s

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論