yangyafeng
驱动牛犊
驱动牛犊
  • 注册日期2002-11-21
  • 最后登录2005-03-29
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2608回复:13

cpld+dsp通讯

楼主#
更多 发布于:2004-12-04 10:01
请教,如何在cpld设置寄存器,使dsp可以读取?谢了!

[编辑 -  12/4/04 by  yangyafeng]
yangyf
lllggg
驱动小牛
驱动小牛
  • 注册日期2002-05-04
  • 最后登录2007-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-12-04 14:17
简单,只要用读信号和地址译码控制寄存器使能端(OE),用写信号和地址译码控制时钟(CLK)即可。
(DEEP + BROAD + SIMPLE) & delicate
yangyafeng
驱动牛犊
驱动牛犊
  • 注册日期2002-11-21
  • 最后登录2005-03-29
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-12-05 09:52

我是新手,能详细解释么?非常感谢
yangyf
yangyafeng
驱动牛犊
驱动牛犊
  • 注册日期2002-11-21
  • 最后登录2005-03-29
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-12-05 09:55
在DSP里面定义一个地址指针:int *readdata=(volatile int *)0xffff01;
DSP程序中:int data=*readdata;只要访问这个地址时,cpld中,(a23 & a22 & a21 & a20 & !a3 &!a2 & !a1 & a0)为1么?
yangyf
yangyafeng
驱动牛犊
驱动牛犊
  • 注册日期2002-11-21
  • 最后登录2005-03-29
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-12-05 10:44

在DSP里面定义一个地址指针:int *readdata=(volatile int *)0x000c;
DSP程序中:int data=*readdata;
cpld中:

[前端处理函数输出data}
assign  ctl_rd =  A[5] |  A[4] |(!A[3])|(!A[2]); //000C
assign  D  = (ctl_rd) ? 16'bz : data;
dsp能读到cpld的数据data么?
谢谢
yangyf
yangyafeng
驱动牛犊
驱动牛犊
  • 注册日期2002-11-21
  • 最后登录2005-03-29
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-12-06 07:47
请各位高手解答楼上问题,谢谢了,急急急急急急!!!
yangyf
yangyafeng
驱动牛犊
驱动牛犊
  • 注册日期2002-11-21
  • 最后登录2005-03-29
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-12-06 15:28
给斑竹llllgggg   5分意思意思,如果我的问题解决了,分大大的有!!!!
我急呀!
yangyf
yangyafeng
驱动牛犊
驱动牛犊
  • 注册日期2002-11-21
  • 最后登录2005-03-29
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-12-07 07:35
简单,只要用读信号和地址译码控制寄存器使能端(OE),用写信号和地址译码控制时钟(CLK)即可。


我用的是dsp6713和cpld95144,能详细解释一下控制方法么?谢谢了
yangyf
lllggg
驱动小牛
驱动小牛
  • 注册日期2002-05-04
  • 最后登录2007-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-12-07 10:42
1、在DSP里面定义一个地址指针:int *readdata=(volatile int *)0xffff01;
DSP程序中:int data=*readdata;只要访问这个地址时,cpld中,(a23 & a22 & a21 & a20 & !a3 &!a2 & !a1 & a0)为1么?

当然是。 你好象是用高4位地址进行段译码,低4位地址进行寄存器级译码,这样是非常有理的。

2、在DSP里面定义一个地址指针:int *readdata=(volatile int *)0x000c;
DSP程序中:int data=*readdata;
cpld中:

[前端处理函数输出data}
assign ctl_rd = A[5] | A[4] |(!A[3])|(!A[2]); //000C
assign D = (ctl_rd) ? 16'bz : data;
dsp能读到cpld的数据data么?
  怎么又把高位译码去掉了呢(如果没有其他外设,也是可以的)?。OCH是1100, 如果按照C3X的外部地址,应该是A3~A0;我感觉你的译码的地址线不对,除非C6的内部字节空间与外部字节空间对应,并且是按32位操作;我回头查一下C6的手册。 另外,你用的是verilog HDL? 我不太熟悉,不过看你的代码,原则是正确的。


(DEEP + BROAD + SIMPLE) & delicate
yjhleaf
驱动小牛
驱动小牛
  • 注册日期2001-11-04
  • 最后登录2005-11-23
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-12-07 19:42
呵呵。
忽如一夜春风来,千树万树梨花开。
lllggg
驱动小牛
驱动小牛
  • 注册日期2002-05-04
  • 最后登录2007-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-12-07 19:56
楼上高手,指点一下? 大家互相帮助嘛,光傻乐干哈:)
(DEEP + BROAD + SIMPLE) & delicate
yangyafeng
驱动牛犊
驱动牛犊
  • 注册日期2002-11-21
  • 最后登录2005-03-29
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-12-08 07:34
1、cpld中,(a23 & a22 & a21 & a20 & !a3 &!a2 & !a1 & a0)

2、cpld中:

[前端处理函数输出data}
assign ctl_rd = A[5] | A[4] |(!A[3])|(!A[2]); //000C

 


两种选址方式一种是或,另一种是与,实际verilog中应该是什么,为什么,请高手指点,
前一位在笑,应该是得意之笑,llllgggg说那种选址方式非常合理,是出自他手!
yangyf
yjhleaf
驱动小牛
驱动小牛
  • 注册日期2001-11-04
  • 最后登录2005-11-23
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-12-12 13:10
也谈不上什么高手,更不是得意,因为大家都是在技术上的不断学习而已了。因为DSP 24bit寻址,而他内部RAM,一般有几块(你可以看他的内存分布图),你在CPLD/FPGA中取数据的话,都要给他分配一个地址作为你的外部扩展空间。当然这个地址不能和其他的共用,为了使地址译码正确,我一般是用高4bit+低4bit(你不闲麻烦把24bit全搞上也行),你自己先试试看。在说DSP方面,我只对DSP(VC33)熟悉些。
忽如一夜春风来,千树万树梨花开。
zhudongl
驱动牛犊
驱动牛犊
  • 注册日期2003-10-23
  • 最后登录2004-12-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-12-16 16:12
cpld中:
设置读使能线,片选线,和DSP的相应控制线相连接,假设要读时
将DSP读控制线和片选控制线置低,在CPLD中,定义输入控制线,一但输入为低电平,将存储单元的数送到数据总线即可,
游客

返回顶部