搜索
bottom↓
回复: 3

求助:控制TLV320AIC23(SPI方式)

[复制链接]

出0入0汤圆

发表于 2010-4-30 11:26:46 | 显示全部楼层 |阅读模式
请问各位大虾,做过FPGA控制音频芯片TLV320AIC23(SPI方式)?
小弟我写出来的代码仿真后就是得不到正确的结果。

目的是重复将11个寄存器reg【15:0】内的数据串行依次输出,
我用了2个计数器。cnt:0-16和cnt2:0-11
cnt重复计数,每cnt=16,cnt2计数
在cnt:0-16计数过程中将reg【15:0】内的内容串行输出。
在cnt2计数中重复11个寄存器。
请各位帮忙指点下:

module audio(clkin,cs_spi,sclk,sdin,stop,cnt,cnt2);
input clkin;
output cs_spi;
output sclk;
output sdin;
output stop;
output [4:0]cnt;
output [3:0]cnt2;// 输出看看

assign sclk=clkin;

//reg sclk;
reg ssclk;
reg [4:0]cnt;
reg [3:0]cnt2;
reg sdin;
reg cs_spi;
reg stop;
reg  [15:0]rin_1=16'b0000000111111111;////example
reg  [15:0]rin_2=16'b0000000111111111;
reg  [15:0]rin_3=16'b0000000111111111;
reg  [15:0]rin_4=16'b0000000111111111;
reg  [15:0]rin_5=16'b0000000111111111;
reg  [15:0]rin_6=16'b0000000111111111;
reg  [15:0]rin_7=16'b0000000111111111;
reg  [15:0]rin_8=16'b0000000111111111;
reg  [15:0]rin_9=16'b0000000111111111;
reg [15:0]rin_10=16'b0000000111111111;
reg [15:0]rin_11=16'b0000000111111111;
reg [15:0]rrin_1,rrin_2,rrin_3,rrin_4,rrin_5,rrin_6,rrin_7,rrin_8,rrin_9,rrin_10,rrin_11;

wire sdo_1,sdo_2,sdo_3,sdo_4,sdo_5,sdo_6,sdo_7,sdo_8,sdo_9,sdo_10,sdo_11;
wire cs_spi1,cs_spi2,cs_spi3,cs_spi4,cs_spi5,cs_spi6,cs_spi7,cs_spi8,cs_spi9,cs_spi10,cs_spi11;

        spi myspi1(.clk(clkin),.cs(cs_spi1),.rin(rin_1),.sdo(sdo_1));
        spi myspi2(.clk(clkin),.cs(cs_spi2),.rin(rin_2),.sdo(sdo_2));
        spi myspi3(.clk(clkin),.cs(cs_spi3),.rin(rin_3),.sdo(sdo_3));
        spi myspi4(.clk(clkin),.cs(cs_spi4),.rin(rin_4),.sdo(sdo_4));
        spi myspi5(.clk(clkin),.cs(cs_spi5),.rin(rin_5),.sdo(sdo_5));
        spi myspi6(.clk(clkin),.cs(cs_spi6),.rin(rin_6),.sdo(sdo_6));
        spi myspi7(.clk(clkin),.cs(cs_spi7),.rin(rin_7),.sdo(sdo_7));
        spi myspi8(.clk(clkin),.cs(cs_spi8),.rin(rin_8),.sdo(sdo_8));
        spi myspi9(.clk(clkin),.cs(cs_spi9),.rin(rin_9),.sdo(sdo_9));
        spi myspi10(.clk(clkin),.cs(cs_spi10),.rin(rin_10),.sdo(sdo_10));
        spi myspi11(.clk(clkin),.cs(cs_spi11),.rin(rin_11),.sdo(sdo_11));
always@(posedge sclk)
begin
        if(cnt==16)
                cnt<=0;
        else
                cnt<=cnt+1;
        if(cnt==16)
                cnt2<=cnt2+1;
        case(cnt2)
        0:begin
                cs_spi<=cs_spi1;
                sdin<=sdo_1;
                cnt2<=1;end
        1:begin
                cs_spi<=cs_spi2;
                sdin<=sdo_2;
                cnt2<=2;end
        2:begin
                cs_spi<=cs_spi3;
                sdin<=sdo_3;
                cnt2<=3;end
        3:begin
                cs_spi<=cs_spi4;
                sdin<=sdo_4;
                cnt2<=4;end
        4:begin
                cs_spi<=cs_spi5;
                sdin<=sdo_5;
                cnt2<=5;end
        5:begin
                cs_spi<=cs_spi6;
                sdin<=sdo_6;
                cnt2<=6;end
        6:begin
                cs_spi<=cs_spi7;
                sdin<=sdo_7;
                cnt2<=7;end
        7:begin
                cs_spi<=cs_spi8;
                sdin<=sdo_8;
                cnt2<=8;end
        8:begin
                cs_spi<=cs_spi9;
                sdin<=sdo_9;
                cnt2<=9;end
        9:begin
                cs_spi<=cs_spi10;
                sdin<=sdo_10;
                cnt2<=10;end
        10:begin
                cs_spi<=cs_spi11;
                sdin<=sdo_11;
                cnt2<=11;end
        11:begin
                cs_spi<=0;
                sdin<=0;
                cnt2<=0;end
        default:begin
                cs_spi<=0;
                sdin<=0;
                cnt2<=0;end
        endcase
end
endmodule

module spi(clk,cs,rin,sdo);
input clk;
input [15:0]rin;
output cs;
output sdo;

reg[4:0]cnt;
reg cs;
reg sdo;
always@(negedge clk)
        case(cnt)
        0:begin
                cs<=1;
                sdo<=rin[15];
                cnt<=1;end
        1:begin
                cs<=1;
                sdo<=rin[14];
                cnt<=2;end
        2:begin
                cs<=1;
                sdo<=rin[13];
                cnt<=3;end
        3:begin
                cs<=1;
                sdo<=rin[12];
                cnt<=4;end
        4:begin
                cs<=1;
                sdo<=rin[11];
                cnt<=5;end
        5:begin
                cs<=1;
                sdo<=rin[10];
                cnt<=6;end
        6:begin
                cs<=1;
                sdo<=rin[9];
                cnt<=7;end
        7:begin
                cs<=1;
                sdo<=rin[8];
                cnt<=8;end
        8:begin
                cs<=1;
                sdo<=rin[7];
                cnt<=9;end
        9:begin
                cs<=1;
                sdo<=rin[6];
                cnt<=10;end
        10:begin
                cs<=1;
                sdo<=rin[5];
                cnt<=11;end
        11:begin
                cs<=1;
                sdo<=rin[4];
                cnt<=12;end
        12:begin
                cs<=1;
                sdo<=rin[3];
                cnt<=13;end
        13:begin
                cs<=1;
                sdo<=rin[2];
                cnt<=14;end
        14:begin
                cs<=1;
                sdo<=rin[1];
                cnt<=15;end
        15:begin
                cs<=1;
                sdo<=rin[0];
                cnt<=16;end
        16:begin
                cs<=0;
                sdo<=0;
                cnt<=0;end
        default:begin
                cs<=0;
                sdo<=0;
                cnt<=0;end
        endcase

endmodule

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入4汤圆

发表于 2012-7-4 15:41:52 | 显示全部楼层
老兄 用vhdl啊 看不懂

出0入0汤圆

发表于 2012-7-4 17:16:44 | 显示全部楼层
寄存器配置没问题吧?

出0入0汤圆

发表于 2012-7-4 17:21:50 | 显示全部楼层
公司有用 TLV320AIC14K。

和你用的芯片基本一样,不过就是 用 I2C来控制寄存器读写的。

为什么不在线调试试试看呢? 只是在仿真?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 09:31

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表