一、配置

模拟器开发板

(1). FPGA芯片:xc7k325t

(2). DSP 芯片:TM320C6747

代码:PCIeSDR-41625-FromBaiLi(内含DSP&FPGA)

二、EMIF简介

EMIF(External Memory Interface)是DSP外部存储器接口的简称,DSP访问片外存储器时必须通过EMIF控制。TM320C6747DSP具有两个EMIF:EMIFA和EMIFB。EMIFA数据总线位宽为8bit或16bit,EMIFB数据总线位宽为16bit或32bit,本文使用的是16bit数据总线位宽的EMIFA。

  1. EMIFA信号

EMIFA_D[15:0]:16bit位宽的数据总线

EMIFA_A[12:0]:13bit位宽的地址总线

EMIFA_BA[1:0]:2bit位宽的补位地址线

EMIFA_WE:写使能信号(低有效)

EMIFA_OE:读使能信号(低有效)

EMIFA_CS[2:5]:4个异步存储器片选信号CS2、CS3、CS4,CS5,本文使用的是片选4即CS4(低有效)(目前还不知道DSP怎样设置才能选择不同的片选信号,当前DSP代码直接选的CS4)。如下图所示,CS4寻址空间为32M

参考《tms320c6747.pdf》23页

参考《PCIE_SDR_V1P00-0424.pdf》模拟器PCB原理图 FPGA-EMIFA板块

参考《PCIE_SDR_V1P00-0424.pdf》模拟器PCB原理图 DSP-EMIFA板块

  1. EMIFA寄存器

  1. EMIFA配置寄存器有三种:

(1). AWCCR(Asynchronous Wait Cycle Configuration Register)异步等待周期配置寄存器

(2). CEnCFG(Asynchronous n Configuration Register)CEn配置寄存器(n=2/3/4/5)

(3). NANDFCR(NAND Flash Control Register)NAND flash 控制寄存器

  1. 下面一一介绍这三种寄存器:

参考《EMIFA-User’sGuide》3.2/3.5/3.12小节

  1. AWCCR

AEMIF_AWCCR = 0xff;//(1111_1111)

  1. CEnCFG(设置读写时序和选择数据总线位宽)

/* init CS4 - 8-bit normal async */

AEMIF_A3CR = 0x9844C2D;//0x00a00505; //0000_1001_1000_0100_1100_0010_ 1101

感兴趣的可以跳到文中Section2.5.3等对应小节for more details

读写时序:具体参考《EMIFA-User’sGuide》2.5.4小节

  1. NANDFCR

一开始以为是这个寄存器选择片选CSn,其实是EMIFA连接的外设是NAND flash 时配置片选信号,不用动程序最终选的就是片选4。

三、地址映射

1.逻辑地址

DSP写的数和读的数存放的地址,eg: 0x64000140;0x6400 0000是片选4起始地址

0x00000140是偏移量

2.物理地址

外设存储器的地址,cpu_addr[13:0] = {emif_a[12:0],emif_ba[1]};

当数据总线位宽为16bit,物理地址最低位是emif_ba[1]。

  1. 地址映射关系

将逻辑地址和物理地址对应起来

当选择了片选之后,只要将逻辑地址的偏移量和物理地址相对应就行。

例1:

偏移量à0x0140->0000 0001 0100 0000---(去掉最后两bit,且去除后第6位由0变为1)->000 0001 1100 00à emif_a[12:0]

例2:

偏移量à0x4000->0100 0000 0000 0000---(去掉最后两bit,且去除后第6位由0变为1)->1000000100000àemif_a[12:0]

注:

这个地址映射关系我没找到在哪里定义了,只是根据程序给出的对应关系推导得到的,可以直接拿来用。若知道怎么改对应关系可以改成更简单的映射关系。

//对应的情况64004000->1000000100000

//对应的情况64003000->0110000100000

//对应的情况64000000->0000000100000

//对应的情况64000002->0000000100000

//对应的情况64000004->0000000100001

//对应的情况64000008->0000000100010

//对应的情况6400000c->0000000100011

//对应的情况64000010->0000000100100

//对应的情况64000014->0000000100101

//对应的情况64000018->0000000100110

//对应的情况6400001c->0000000100111

四、FPGA-->DSP

1. FPGA向0x6400140和0x6400144地址分别写入411、211

always @(posedge cl)

begin

case(emif_a[12:0])

//FPGA->DSP

11'b0000001110000:

cpu_dr<=411;                   //64000140

11'b0000001110001:

cpu_dr<=211;                    //64000144

endcase

end

assign emif_d[15:0]   = (~emif_oe) ? cpu_dr : {16{1'bZ}};

2.DSP将这两个地址的数打印出来

while(i++){

short rdval1;

short rdval2;

rdval1 = (*((volatile unsigned short*)(0x64000140)));

rdval2 = (*((volatile unsigned short*)(0x64000144)));

printf("rdval1 = %d \r\n",rdval1);

printf("rdval2 = %d \r\n",rdval2);

}

五、DSP-->FPGA

1. FPGA将0x64000148和0x6400014c地址的数分别赋值给write_test1、write_test2

int i=1;

always @(posedge cl)

begin

case(emif_a[12:0])

//FPGA->DSP

11'b0000001110010:

write_test1<=emif_d[15:0]; // //64000148

11'b0000001110011:

write_test2<=emif_d[15:0]; //6400014c

endcase

end

  1. DSP 向0x64000148和0x6400014c分别写入16位宽的数0x5555和0x6666

int i=1;

while(i++){

short rdval3;

short rdval4;

rdval3 = (*((volatile unsigned short*)(0x64000148)));

rdval4 = (*((volatile unsigned short*)(0x6400014c)));

rdval3 = 0x5555;//注意是16位宽的数

rdval4 = 0x6666;

}

Or 在.h文件中声明好rdval1/2/3/4的地址

#define rdval1 (*((volatile unsigned short*)(0x64000140)))

#define rdval2 (*((volatile unsigned short*)(0x64000144)))

#define rdval3 (*((volatile unsigned short*)(0x64000148)))

#define rdval4 (*((volatile unsigned short*)(0x6400014c)))

参考文献

《tms320c6747.pdf》

《PCIE_SDR_V1P00-0424.pdf》

《EMIFA-User’sGuide》

DSP与FPGA之EMIF接口的调试说明相关推荐

  1. DSP与FPGA间简单通信时序

    DSP与FPGA采用EMIF接口通信,即将FPGA作为DSP的外部SRAM,只需设置EMIF控制的存储器为SRAM类型即可,DSP通过EMIF接口读写SRAM的时序如下: 参考datasheet< ...

  2. FPGA与DSP之间的EMIF接口调试

    外部设备连接接口包括外部存储器连接接口(EMIF).主机接口(HPI)等.外部存储器接口主要用来同并行存储器连接,这些存储器包括SDRAM.SBSRAM.Flash.SRAM存储器等,外部存储器接口还 ...

  3. DSP的EMIF接口通信FPGA

    DSP通过EMIF接口与FPGA通信采集视频 背景 使用FPGA系统进行视频采集,DSP进行视频处理需要了解以下知识: 1.  DSP-C6000系列的中断与GPIO系统 2.  DSP-C6000系 ...

  4. DSP通过EMIF接口与FPGA通信采集视频

    DSP通过EMIF接口与FPGA通信采集视频 背景 使用FPGA系统进行视频采集,DSP进行视频处理需要了解以下知识: 1.  DSP-C6000系列的中断与GPIO系统 2.  DSP-C6000系 ...

  5. dsp6455 + FPGA的EMIF数据接口

    DSP通过EMIF接口与FPGA通信采集视频 背景 使用FPGA系统进行视频采集,DSP进行视频处理需要了解以下知识: 1.  DSP-C6000系列的中断与GPIO系统 2.  DSP-C6000系 ...

  6. OMAPL138使用EMIF接口与FPGA通信

    OMAPL138中的ARM通过EMIF接口把数据写到FPGA,再由ARM从FPGA把数据读取出来:EMIF共有16位数据总线和地址总线,ARM通过总线对数据进行读写: 默认时钟144M DSP裸机读写 ...

  7. 【有关TI C6000的DSP的EMIF接口的两个问题:地址总线不从零开始问题及寻址范围问题】

    TI C66X的DSP的EMIF16接口的寻址问题:地址总线不从零开始问题及寻址范围问题 C66x EMIF16使用手册 EMIF简介及特性 EMIF16 信号说明 异步访问配置 EMIF16 EMI ...

  8. emif接口速率问题_有关TI DSP的EMIF接口的两个问题

    接口的两个问题: 地址总线不从零开始问题及寻址范围问题 作者: JBB0523 (彬彬有礼) 示例芯片: TMS320C6416 EMIF ,即 E xternal M emory I nter F ...

  9. 物理气相沉积半导体设备 PVD DSP/ARM+FPGA控制器设计

    磁控溅射技术属于PVD(物理气相沉积)技术的一种,是制备薄膜材料的重要方法之一.它是利用带电荷的粒子在电场中加速后具有一定动能的特点,将离子引向被溅射的物质制成的靶电极(阴极),并将靶材原子溅射出来使 ...

最新文章

  1. 片元着色器(Fragment Shader)被称为像素着色器(Pixel Shader),但
  2. 【青少年编程】【答疑】控制Scratch异步代码的执行顺序
  3. Elasticsearch之CURL命令的PUT和POST对比
  4. OpenStack的部署T版(五)——Nova组件
  5. 华为新系统鸿蒙有哪些手机_华为鸿蒙OS系统传来新消息!外媒宣布:未来几年内华为手机都将无缘...
  6. java的归并排序算法_归并排序算法Java实现
  7. WinAPI——Windows 消息
  8. 从网络访问计算机不能添加用户名,windows7 和 XP 能互相用\\ip访问,但是不能通过计算机名访问...
  9. chrome控制台如何把vw显示成px_【CSS】679 rem,em,px的区别和使用场景
  10. mysql 触发器执行失败_mysql-Mysql数据库触发器执行不成功
  11. Away3d学习笔记(1)
  12. 分享一个NHibernate的博客链接
  13. 面对一个全新的环境,作为一个Mysql DBA,首先应该了解什么?
  14. 双亲委派模型【理解】
  15. 求职时,我问过的问题
  16. Mysql --- 索引
  17. PL/sql快速格式化语句
  18. 视频结构化+AI,智能安防的未来
  19. php服务器监控系统,91 Monitor
  20. 字节跳动 校招薪资曝光,老员工被倒挂疯了~

热门文章

  1. Hive 的分区表是什么?
  2. linux的lvcreate语句,lvcreate
  3. 江湖侠客令服务器维护,江湖侠客令关服公告什么时候关服_关服公告及补偿_3DM页游...
  4. js实现图片拷贝到剪贴板
  5. 建设管理APP技术服务支持
  6. 程序猿的节日:1024,今天祝愿全球所有程序猿们、IT精英们节日快乐!
  7. 如何在C#+VS2012环境中使用AutoIt
  8. 计算机usb接口更新,教大家电脑USB接口2.0怎么升级成3.0
  9. 关于组织支持度和员工敬业度
  10. IIS错误:在唯一密钥属性“fileExtension”设置为“.mp4”时,无法添加类型为“mimeMap”的重复集合项