打印

关于CPLD的奇怪问题

[复制链接]
2354|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
colddown|  楼主 | 2010-7-27 13:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 colddown 于 2010-7-27 13:41 编辑

本人使用的MAX系列的EPM3128A型CPLD,和TI的TMS320VC33浮点型DSP。CPLD的主要作用是根据DSP地址线的低三位对不同外部设备(磁罗盘和A/D芯片)产生片选等控制信号,磁罗盘的地址是010(完整地址0xC00002),A/D芯片的地址是1xx。

磁罗盘的写信号PNIWE由如下verilog语句描述:(RW是读写信号,高为读;AL是地址线的低三位;PAGE3是页选择信号,进行读写操作时都会变低)
       assign PNIWE = ~(~RW & (AL==3'b010) & ~PAGE3);

A/D芯片的片选AD_CS和读信号AD_RD是:(AD_RD 和AD_CS 都是OD门,外接10K上拉电阻)
       assign AD_OE = ~(RW & (AL[2]==1'b1) & ~PAGE3);
       assign AD_RD = AD_OE ? 1'bz : 1'b0;
       assign AD_CS = AD_OE ? 1'bz : 1'b0;

AD采集在定时器中断程序中进行,频率是10KHz。磁罗盘的采集函数在main函数中调用,函数内容如下:
void PNI11096_Start()
{                           
       ENTER_CRITICAL_SECTION()       //关中断
       g_PNI11096_Int = 0;      
       *pPNI11096 = 0x71;  //写磁罗盘   pPNI11096 = 0xC00006
       EXIT_CRITICAL_SECTION()          //开中断
}
当DSP执行 *pPNI11096 = 0x71; 这一句时,PNIWE会产生低脉冲,启动磁罗盘。

现在的问题是如果允许10KHz的A/D采集,那么有时候写磁罗盘就会失败,即PNIWE不会变低(单步运行也是)。如果关闭A/D采集,写磁罗盘就没有出现过失败。请各位高手帮忙分析一下,按理说在写磁罗盘的时候关中断了,A/D采集不应该有影响啊。
}

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

9

帖子

1

粉丝