色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 基于FPGA和AD1836的I2S接口設(shè)計(jì)

          基于FPGA和AD1836的I2S接口設(shè)計(jì)

          作者: 時(shí)間:2008-08-14 來源:網(wǎng)絡(luò) 收藏
          引 言

          I公司新推出的一款高性能的單片聲碼器,適用于數(shù)字音頻系統(tǒng)。它采用5V供電,數(shù)字接口輸入輸出電平為LVTTL電平,可以直接和一般的連接。集成了3路立體的D/A和兩路立體的A/D,參考電壓為2.25V,為了降低信號(hào)的干擾,模擬信號(hào)的輸入輸出均采用差分的形式,輸入輸出模擬信號(hào)的最大峰峰值為5.6V。系統(tǒng)時(shí)鐘為12.288MHz,數(shù)據(jù)采樣率最高為96kHz,采樣位數(shù)最高為24位,可以通過SPI口方便地對內(nèi)部功能寄存器進(jìn)行配置,從而選擇相應(yīng)的功能,例如:時(shí)鐘、工作模式、采樣率、采樣位數(shù)、工作A/D和D/A的路數(shù)等選擇。其中A/D和D/A的數(shù)字接口可以配置為接口模式,本文主要以AD中的D/A為例介紹接口的設(shè)計(jì)。

          I2S總線協(xié)議簡介

          (Inter IC Sound Bus)是飛利浦公司為數(shù)字音頻設(shè)備之間的音頻數(shù)據(jù)傳輸而制定的一種總線標(biāo)準(zhǔn),它既規(guī)定了硬件接口規(guī)范,也規(guī)定了數(shù)字音頻數(shù)據(jù)的格式。I2S有三個(gè)主要的信號(hào):

          (1)串行時(shí)鐘BCLK,也叫位時(shí)鐘,即對應(yīng)于數(shù)字音頻的每一位數(shù)據(jù),BCLK都有一個(gè)脈沖。BCLK的頻率=2采樣率采樣位數(shù)。

          (2)幀時(shí)鐘LRCLK,用于切換左右聲道的數(shù)據(jù)。LRCLK為“1”表示正在傳輸?shù)氖怯衣暤赖臄?shù)據(jù),為“0”則表示正在傳輸?shù)氖亲舐暤赖臄?shù)據(jù)。LRCLK的頻率等于采樣頻率。

          (3)串行數(shù)據(jù)SDATA,就是用二進(jìn)制補(bǔ)碼表示的音頻數(shù)據(jù)。

          有時(shí)為了使系統(tǒng)能夠更好的同步,還需要另外傳輸一個(gè)信號(hào)MCLK,稱為主時(shí)鐘,也叫系統(tǒng)時(shí)鐘,是采樣頻率的256倍或384倍。典型的I2S接口時(shí)序如圖1所示,對于系統(tǒng)而言,產(chǎn)生BCLK和LRCLK信號(hào)的信號(hào)端是主設(shè)備。I2S的數(shù)據(jù)線用于串行數(shù)據(jù),當(dāng)LRCLK變化(也就是左右通道的數(shù)據(jù)切換),在第二個(gè)BLCK處數(shù)據(jù)開始,按照高位在先低位在后的順序進(jìn)行傳輸。數(shù)據(jù)在BCLK的下降沿改變,在BCLK的上升沿進(jìn)行數(shù)據(jù)的采樣。因此,在BCLK的上升沿處數(shù)據(jù)必須是穩(wěn)定的,接收端和發(fā)送端處理的有效數(shù)據(jù)的位數(shù)可以不同:如果接收端可處理的有效數(shù)據(jù)的位數(shù)多于發(fā)送端,將不足的數(shù)據(jù)位用0補(bǔ)足;反之,則將多余的數(shù)據(jù)位舍棄。

          I2S接口硬件設(shè)計(jì)

          本設(shè)計(jì)采用Altera公司的Stratix系列的,EP1S10672I7來實(shí)現(xiàn)AD1836中D/A的I2S接口設(shè)計(jì)。該芯片內(nèi)核電壓為1.5V,I/O電壓為3.3V,符合AD1836數(shù)字接口輸入輸出電平要求,其中D/A部分的I2S接口硬件設(shè)計(jì)原理圖如圖2所示。

          本設(shè)計(jì)中,將AD1836采樣時(shí)鐘設(shè)置為48kHz,采樣位數(shù)為24位。從AD1836數(shù)據(jù)手冊可知,其系統(tǒng)時(shí)鐘(MCLK)為12.288MHz,左右通道數(shù)據(jù)切換時(shí)鐘(LRCLK)等于采樣時(shí)鐘(48kHz),數(shù)據(jù)位時(shí)鐘(DBCLK)為64左右通道數(shù)據(jù)切換時(shí)鐘(3.072MHz)。所以串行數(shù)據(jù)線上傳輸?shù)氖?4位的有效數(shù)據(jù),其余數(shù)據(jù)位時(shí)鐘周期對應(yīng)的數(shù)據(jù)線上的數(shù)據(jù)為0,串行數(shù)據(jù)線DSDATA1、DSDATA2、DSDATA3分別對應(yīng)于三路的立體D/A,所有的時(shí)鐘線和數(shù)據(jù)線均經(jīng)過下拉電阻后與的I/O相連。

          基于FPGA的實(shí)現(xiàn)

          邏輯模塊設(shè)計(jì)

          FPGA內(nèi)部邏輯模塊主要包括分頻模塊和D_A接口模塊,如圖3所示。其中分頻模塊將AD1836的系統(tǒng)時(shí)鐘12.288MHz分頻為3.072MHz(即位時(shí)鐘BCLK);start信號(hào)為模塊使能信號(hào),為高時(shí),D_A接口模塊將從DATIN引腳輸入的24位并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù),從Datout引腳輸出;當(dāng)左右通道時(shí)鐘切換時(shí),輸入的24位并行數(shù)據(jù)也相應(yīng)改變,同時(shí)從LRclk引腳輸出48kHz的左右通道數(shù)據(jù)切換時(shí)鐘,從Bclk引腳輸出3.072MHz的位時(shí)鐘信號(hào)。LRclk和Bclk都是在AD1836的系統(tǒng)時(shí)鐘(MCLK)的基礎(chǔ)上分頻得到的,從而保證了整個(gè)系統(tǒng)的同步性。

          軟件設(shè)計(jì)

          所有軟件的設(shè)計(jì)是在QuartusⅡ 6.0中采用Verilog HDL語言輸入完成的,系統(tǒng)采用10MHz的有源晶振,通過FPGA內(nèi)部的鎖相環(huán)進(jìn)行二級倍頻從而得到12.288MHz的時(shí)鐘信號(hào),然后通過clkin_12_288M引腳送入分頻模塊。主要的程序如下:

          分頻模塊

          Module freq3_027M(clkin12_288M, clkout3_027M);

          input clkin12_288M; //時(shí)鐘輸入引腳

          output clkout3_027M; //時(shí)鐘輸出引腳

          reg clkout3_027M; //分頻計(jì)數(shù)器

          integer cunt;

          always@( posedge clkin12_288M) begin

          cunt=cunt+1;

          if (cunt=1)

          begin clkout3_027M=1'b0;end

          else if((cunt=3)(cunt>=2))

          begin clkout3_027M=1'b1;end

          else

          begin cunt=0;clkout3_027M=1'b0;end

          end

          endmodule

          D_A接口模塊

          (1)左右通道切換時(shí)鐘和數(shù)據(jù)位時(shí)鐘

          assign LRCLKout = LR_f; //左右通道切換時(shí)鐘

          assign BCLKout =(BCLK_f)?BCLKin:1'b1; //數(shù)據(jù)位時(shí)鐘

          (2)時(shí)鐘輸出和數(shù)據(jù)的并串轉(zhuǎn)換

          always@( negedge BCLKin) begin

          if(start) begin //使能信號(hào)為高

          cunt=cunt+1;

          case (cunt)

          1: begin LR_f=~LR_f; //左右通道時(shí)鐘

          BCLK_f=1'b1;end //送出位數(shù)據(jù)時(shí)鐘

          2: datout=DDSdatin[23];//送出最高位

          3: datout=DDSdatin[22]; //送出次高位

          4: datout=DDSdatin[21];

          5: datout=DDSdatin[20];

          6: datout=DDSdatin[19];

          7: datout=DDSdatin[18];

          8: datout=DDSdatin[17];

          9: datout=DDSdatin[16];

          10: datout=DDSdatin[15];

          11: datout=DDSdatin[14];

          12: datout=DDSdatin[13];

          13: datout=DDSdatin[12];

          14: datout=DDSdatin[11];

          15: datout=DDSdatin[10];

          16: datout=DDSdatin[9];

          17: datout=DDSdatin[8];

          18: datout=DDSdatin[7];

          19: datout=DDSdatin[6];

          20: datout=DDSdatin[5];

          21: datout=DDSdatin[4];

          22: datout=DDSdatin[3];

          23: datout=DDSdatin[2];

          24: datout=DDSdatin[1];

          25: datout=DDSdatin[0]; //數(shù)據(jù)已經(jīng)發(fā)送完畢

          26: datout=0; //剩余的數(shù)據(jù)送0

          27: datout=0;

          28: datout=0;

          29: datout=0;

          30: datout=0;

          31: datout=0;

          32: datout=0;

          default:datout=1'bz;

          endcase

          end

          軟件仿真

          模塊的仿真也是在軟件QuartusⅡ6.0中實(shí)現(xiàn)的,仿真波形如圖4所示。為了便于仿真,在24位的并行數(shù)據(jù)輸入口輸入十六進(jìn)制的常數(shù)AB15F7H,此時(shí)送入左右通道的數(shù)據(jù)是相同的。從仿真波形中可以看出,當(dāng)start信號(hào)高有效后,位數(shù)據(jù)時(shí)鐘和左右通道數(shù)據(jù)切換時(shí)鐘送出,將并行的24位數(shù)據(jù)AB15F7H從數(shù)據(jù)線上串行送出,在多余的位數(shù)據(jù)時(shí)鐘處數(shù)據(jù)線上的數(shù)據(jù)為0,仿真結(jié)果與I2S接口時(shí)序圖相符合。

          結(jié)束語

          本文以FPGA為控制單元,完成了AD1836中D/A部分的I2S接口設(shè)計(jì),它在數(shù)字音頻系統(tǒng)的設(shè)計(jì)中有一定的參考和實(shí)用價(jià)值。該設(shè)計(jì)已經(jīng)成功運(yùn)用在某話路特性綜合測試系統(tǒng)中,性能良好。



          關(guān)鍵詞: FPGA 1836 I2S AD

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉