DSP28335与FPGA通过XINTF总线通信问题 5
做了个DSP28335与FPGA通讯的最小系统板,DSP和FPGA都能进行仿真和下载,把FPGA映射到了DSP的ZONE0区域,FPGA作为DSP的一个外设进行操作,但是...
做了个DSP28335与FPGA通讯的最小系统板,DSP和FPGA都能进行仿真和下载,把FPGA映射到了DSP的ZONE0区域,FPGA作为DSP的一个外设进行操作,但是在两个联合调试的时候出现了以下问题
(1)FPGA运行,DSP单步调试,但是一到操作对Zone 0外部地址0x4500进行写数的时候,DSP仿真就出错,提示Trouble Reading Register PC:(Error -1156 @ 0x0)Device may be operating in low-power mode. Do you want to bring it out of this mode?(Emulation package 5.1.232.0),但是只要让FPGA停止运行,DSP就能正常对外部地址写数,不会出现错误了。(FPGA只是判断地址总线地址,和CS,WE信号 进行读取数据并将数据写进FIFO)
(2)DSP全速运行的时候,FPGA也运行,FPGA给DSP一个中断,DSP对FPGA 0x4500(DSP ZONE0区域)写数,用Signal TapII掐取FPGA信号能够掐到地址总线和数据,但是只收到第一个数据,说明addr,data,cs0,we,oe,连接是正常的。最后我用DSP外部安检作为中断输入测了一下中断函数,只要DSP一运行到操作外部地址的时候就不知道跑去哪了,在产生中断也进不去了,但是八操作地址部分屏蔽的时候,有中断信号就能正常产生中断。
DSP中断函数如下
interrupt void xint1_isr(void)
{
Uint16 i=0;
GpioDataRegs.GPATOGGLE.bit.GPIO13=1;//用来判断中断是否好使,好使则led取反
rd_data[0]=0x34;
rd_data[1]=0x34;
rd_data[2]=0x34;
for(i=0;i<3;i++) *(int *)(0x4500)=rd_data[i];//屏蔽掉这句,有中断信号就能产生中断,不屏蔽这句,有中断进来之后执行到这就不知道跑哪里去了,在有中断也不进
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
FPGA 接收逻辑如下:
module DG_DSP_Write_Test(clk,
rst,addr,data,wr,cs,rd,outreg,fifo_wr,//FIFO写信号,wrusedw//FIFO以用字节数);
input clk;
input rst;
input [18:0]addr;
input [15:0]data;
input wr;
input cs;
input rd;
input [7:0]wrusedw;
output reg [15:0] outreg;
output reg fifo_wr;
wire wre;
assign wre=(!wr)&&(!cs)&&(rd);
reg wre_reg;
reg wre_reg1;
reg wre_reg2;
always@(posedge clk)
begin
if(!rst)
begin
wre_reg<=1'b0;
wre_reg1<=1'b0;
wre_reg2<=1'b0;
end
else
begin
wre_reg<=wre;
wre_reg1<=wre_reg;
wre_reg2<=wre_reg1;
end
end
always@(posedge clk)
begin
if(!rst)
begin
outreg<=16'h0;
fifo_wr<=1'b0;
end
else
begin
if((!wre_reg2)&(wre_reg1)) //判断写信号是否有下降沿产生
begin
if((addr==19'h4500)&&(wrusedw<8'd10))// 判断地址总线和FIFO中的字节数
begin
outreg<=data;
fifo_wr<=1'b1;
end
else
begin
outreg<=16'h0;
fifo_wr<=1'b0;
end
end
end
endmodule 展开
(1)FPGA运行,DSP单步调试,但是一到操作对Zone 0外部地址0x4500进行写数的时候,DSP仿真就出错,提示Trouble Reading Register PC:(Error -1156 @ 0x0)Device may be operating in low-power mode. Do you want to bring it out of this mode?(Emulation package 5.1.232.0),但是只要让FPGA停止运行,DSP就能正常对外部地址写数,不会出现错误了。(FPGA只是判断地址总线地址,和CS,WE信号 进行读取数据并将数据写进FIFO)
(2)DSP全速运行的时候,FPGA也运行,FPGA给DSP一个中断,DSP对FPGA 0x4500(DSP ZONE0区域)写数,用Signal TapII掐取FPGA信号能够掐到地址总线和数据,但是只收到第一个数据,说明addr,data,cs0,we,oe,连接是正常的。最后我用DSP外部安检作为中断输入测了一下中断函数,只要DSP一运行到操作外部地址的时候就不知道跑去哪了,在产生中断也进不去了,但是八操作地址部分屏蔽的时候,有中断信号就能正常产生中断。
DSP中断函数如下
interrupt void xint1_isr(void)
{
Uint16 i=0;
GpioDataRegs.GPATOGGLE.bit.GPIO13=1;//用来判断中断是否好使,好使则led取反
rd_data[0]=0x34;
rd_data[1]=0x34;
rd_data[2]=0x34;
for(i=0;i<3;i++) *(int *)(0x4500)=rd_data[i];//屏蔽掉这句,有中断信号就能产生中断,不屏蔽这句,有中断进来之后执行到这就不知道跑哪里去了,在有中断也不进
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
FPGA 接收逻辑如下:
module DG_DSP_Write_Test(clk,
rst,addr,data,wr,cs,rd,outreg,fifo_wr,//FIFO写信号,wrusedw//FIFO以用字节数);
input clk;
input rst;
input [18:0]addr;
input [15:0]data;
input wr;
input cs;
input rd;
input [7:0]wrusedw;
output reg [15:0] outreg;
output reg fifo_wr;
wire wre;
assign wre=(!wr)&&(!cs)&&(rd);
reg wre_reg;
reg wre_reg1;
reg wre_reg2;
always@(posedge clk)
begin
if(!rst)
begin
wre_reg<=1'b0;
wre_reg1<=1'b0;
wre_reg2<=1'b0;
end
else
begin
wre_reg<=wre;
wre_reg1<=wre_reg;
wre_reg2<=wre_reg1;
end
end
always@(posedge clk)
begin
if(!rst)
begin
outreg<=16'h0;
fifo_wr<=1'b0;
end
else
begin
if((!wre_reg2)&(wre_reg1)) //判断写信号是否有下降沿产生
begin
if((addr==19'h4500)&&(wrusedw<8'd10))// 判断地址总线和FIFO中的字节数
begin
outreg<=data;
fifo_wr<=1'b1;
end
else
begin
outreg<=16'h0;
fifo_wr<=1'b0;
end
end
end
endmodule 展开
7个回答
展开全部
代码上看不出有什么问题,DSP连到fpga的线都作为FPGA的输入口,按道理应该不会对DSP有影响。两个芯片的接口电压是一致的吧?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
STM32F103是一款高性能的嵌入式芯片,由意法半导体(STMicroelectronics)公司生产。它是STM32系列芯片之一,具有紧凑、低功耗、高性能等特点,被广泛应用于嵌入式系统中。STM32F103的主要特点包括:1. 集成了A...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
建议查下,1-是否存在同时读或者写的情况。2-操作的所有管脚有没有与dsp的boot管脚相连,运行过程中影响了(按照你的描述可能性较小)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我不太知道你想实现什么功能,但是我看你的FPGA程序里把数据设置成了输入类型,我感觉应该设置成输入输出类型,我也在搞这个,我连接仿真器28335与fpga可以正常通信传输数据,但是烧写到flash后dsp程序就会卡住,不知道你问题解决没
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主解决没有,我也遇到了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
谢谢,我想用片上的AD测量测量电压,电流一类的信号,这样可以省掉外部的AD了.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |