基于FPGA和AD1836的I2S接口設(shè)計(jì)
發(fā)布時(shí)間:2008/8/18 0:00:00 訪問次數(shù):955
i2s總線協(xié)議簡(jiǎn)介
i2s(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í)鐘,即對(duì)應(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所示,對(duì)于系統(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系列的fpga,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ì)原理圖如圖1所示。
本設(shè)計(jì)中,將ad1836采樣時(shí)鐘設(shè)置為48khz,采樣位數(shù)為24位。從ad1836數(shù)據(jù)手冊(cè)可知,其系統(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í)鐘周期對(duì)應(yīng)的數(shù)據(jù)線上的數(shù)據(jù)為0,串行數(shù)據(jù)線dsdata1、dsdata2、dsdata3分別對(duì)應(yīng)于三路的立體d/a,所有的時(shí)鐘線和數(shù)據(jù)線均經(jīng)過下拉電阻后與fpga的i/o相連。
基于fpga的實(shí)現(xiàn)
邏輯模塊設(shè)計(jì)
fpga內(nèi)部邏輯模塊主要包括分頻模塊和d_a接口模塊,如圖2所示。其中分頻模塊將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語(yǔ)言輸入完成的,系統(tǒng)采用10mhz的有源晶振,通過fpga內(nèi)部的鎖相環(huán)進(jìn)行二級(jí)倍頻從而得到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=dds
i2s總線協(xié)議簡(jiǎn)介
i2s(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í)鐘,即對(duì)應(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所示,對(duì)于系統(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系列的fpga,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ì)原理圖如圖1所示。
本設(shè)計(jì)中,將ad1836采樣時(shí)鐘設(shè)置為48khz,采樣位數(shù)為24位。從ad1836數(shù)據(jù)手冊(cè)可知,其系統(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í)鐘周期對(duì)應(yīng)的數(shù)據(jù)線上的數(shù)據(jù)為0,串行數(shù)據(jù)線dsdata1、dsdata2、dsdata3分別對(duì)應(yīng)于三路的立體d/a,所有的時(shí)鐘線和數(shù)據(jù)線均經(jīng)過下拉電阻后與fpga的i/o相連。
基于fpga的實(shí)現(xiàn)
邏輯模塊設(shè)計(jì)
fpga內(nèi)部邏輯模塊主要包括分頻模塊和d_a接口模塊,如圖2所示。其中分頻模塊將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語(yǔ)言輸入完成的,系統(tǒng)采用10mhz的有源晶振,通過fpga內(nèi)部的鎖相環(huán)進(jìn)行二級(jí)倍頻從而得到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=dds
熱門點(diǎn)擊
- 典型ASIC設(shè)計(jì)主要流程
- 基于FPGA和AD1836的I2S接口設(shè)計(jì)
- Agilent推出GENESYS EDA軟件
- 基于Verilog語(yǔ)言的可維護(hù)性設(shè)計(jì)技術(shù)
- PLC可編程序控制器基礎(chǔ)知識(shí)
- 基于FPGA的數(shù)據(jù)無阻塞交換設(shè)計(jì)
- GE Fanuc發(fā)布支持Xilinx Vir
- 一種針對(duì)功率設(shè)計(jì)SDR的整體方法
- Actel推出新的集成開發(fā)環(huán)境Libero
- Ittiam Systems選用Strati
推薦技術(shù)資料
- 聲道前級(jí)設(shè)計(jì)特點(diǎn)
- 與通常的Hi-Fi前級(jí)不同,EP9307-CRZ這臺(tái)分... [詳細(xì)]
- MOSFET 電感單片降壓開關(guān)模式變換器優(yōu)勢(shì)
- SiC MOSFET 和 IG
- 新型 電隔離無芯線性霍爾效應(yīng)電
- 業(yè)界超小絕對(duì)位置編碼器技術(shù)參數(shù)設(shè)計(jì)
- 高帶寬、更高分辨率磁角度傳感技術(shù)應(yīng)用探究
- MagAlpha 角度位置傳感
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究