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

可以根据以上时序图编写FPGA代码,以下仅供参考:

moduleDSP_FPGA(                                       
                                input clk,                            
                                input [2:0] addr,       //简单测试,没有用到所有地址             
                                 inout[15:0] data,     //16位数据宽度            
                                input CE_2,//FPGA片选                 
                                input AOE,                            
                                input AWE                             
                             );                                     
                                                                     
                                                       
reg [15:0]DSP_FPGA_REG0;                          
reg [15:0]DSP_FPGA_REG1;                              
reg [15:0]DSP_FPGA_REG2;                          
reg [15:0]DSP_FPGA_REG3;                          
reg [15:0]DSP_FPGA_REG4;                              
reg [15:0] DSP_FPGA_REG5;                          
reg [15:0]DSP_FPGA_REG6;                          
reg [15:0]DSP_FPGA_REG7;

wire rd_en = ~CE_2 && ~AOE;

reg [15:0] data_reg;      
//always @(posedge clk) //DSP读操作,The samplingpoint of DSP reading is the risging edge ofAWE!                               
always @(*)    //这里没有用时钟,用的latch
begin                                                
  if(rd_en)                                 
     begin                                           
       case(addr[2:0])                              
         3'd0   : data_reg <= DSP_FPGA_REG0;  
         3'd1   : data_reg <= DSP_FPGA_REG1;  
         3'd2   : data_reg <= DSP_FPGA_REG2;  
         3'd3   : data_reg <= DSP_FPGA_REG3;  
         3'd4   : data_reg <= DSP_FPGA_REG4;  
         3'd5   : data_reg <= DSP_FPGA_REG5;  
         3'd6   : data_reg <= DSP_FPGA_REG6;  
         3'd7   : data_reg <= DSP_FPGA_REG7;       
         default: ;                                 
        endcase                                 
    end                                                                                               
end

reg AWE_tmp1;
reg AWE_tmp2;
always @(posedge clk)
begin
     AWE_tmp1 <= AWE;
     AWE_tmp2 <= AWE_tmp1;
end      
      
wire AWE_RISING = ~AWE_tmp2 && AWE_tmp1;//与clk同步

always@(*)                                   
begin                                        
  if(AWE_RISING)      //这里也没有用时钟,用的是latch                       
    begin                                    
       case(addr[2:0])                       
         3'd0   : DSP_FPGA_REG0 <= data; 
         3'd1   : DSP_FPGA_REG1 <= data; 
         3'd2   : DSP_FPGA_REG2 <= data; 
         3'd3   : DSP_FPGA_REG3 <= data; 
         3'd4   : DSP_FPGA_REG4 <= data; 
         3'd5   : DSP_FPGA_REG5 <= data; 
         3'd6   : DSP_FPGA_REG6 <= data; 
         3'd7   : DSP_FPGA_REG7 <= data;    
         default: ;                          
        endcase                          
    end                                      
end

assign data =  rd_en ? data_reg : 16'hzzzz;
      
endmodule

//
DSP(具体为DM642)端程序:寄存器设置参考 《EMIF ReferenceGuide- spru266b.pdf》 即spru266

#define   FPGA_ADDR             0xA0000000  
//#define   EMIFA_GBLCTL         0x01800000
#define   EMIFA_CECTL2         0x01800010

//#define   EMIFA_CESEC2        0x01800050

void  delay(unsigned long time)
{
       unsigned long i;
       for(i = 0; i < 1000; i++)
       {
            for(; time >0 ; time--)
             {
             } 
        }
 }

unsigned short write_value = 0;
unsigned short read_value = 0; 
int main(void)
{
        unsigned short *ptr;

*(unsigned volatile int *)EMIFA_CECTL2 =(unsigned int)0xFFFFFF13;//设置EMIF控制的存储器类型为                                                                                                                        //16位宽SRAM

ptr = (unsigned short*)(unsigned int)FPGA_ADDR;
        
        while(1)
        {
              *ptr = write_value;
               read_value=   *ptr;     //调试时通过观察write_value与read_value的值是否相等可以检验通信是否正常

delay(100000);
               write_value++;
         }
     
         return 0;
}

实际测试发现写入与读出的值相同

DSP与FPGA间简单通信时序相关推荐

  1. AIDL 应用间简单通信demo及基本问题

    AIDL:Android Interface Definition Language,即Android接口定义语言. 他的作用大家已经知道了,有些童鞋对于其中的使用细节可能会有一些理解误差,并且会造成 ...

  2. 多通路fpga 通信_多核DSP和FPGA之间的高速SRIO通信

    多核 DSP 和 FPGA 之间的高速 SRIO 通信 汪安民 1 ,韩道文 2 ,徐焱 3 [摘 要] 摘要:在高速采样系统中,大量数据需要实时传输到处理器.尤其是 系统中存在多个处理器协同工作,就 ...

  3. 华大半导体HC32F4A0系列ARM芯片EXMC并口通信时序的FPGA实现

    华大半导体HC32F4A0系列ARM芯片EXMC并口通信时序的FPGA实现 EXMC简介 外部存储器控制器EXMC是一个用来访问各种片外存储器.实现数据交换的独立模块.EXMC通过配置可以把内部的AM ...

  4. FPGA学习笔记(1)简单的时序逻辑电路——流水灯

    FPGA学习笔记(1)简单的时序逻辑电路--流水灯 编程语言为Verilog HDL 原理 (1)设计一个计数器,使开发板上的4个LED状态每500ms翻转一次.开发板上的晶振输出时钟频率为50MHz ...

  5. FPGA学习-8:简单的时序电路

    经过上一章的了解 组合电路的最大优势就是能直接根据输入进行输出 但其也有很多的缺点:占大量的电路资源,功耗较大,电路固定- 这一次我们来讲基本的时序电路,写一个简单的时序控制电路 再在此基础上将之前的 ...

  6. access下如何配置两个vlan_不同vlan间的通信如何简单配置(三种方式) ?

    1.单臂路由(图) 环境:一台路由器,一台二层交换机,两台pc机 二层交换机的配置 一般模式: Switch> 输入enable进入特权模式: Switch>enable 输入config ...

  7. ARM、DSP、FPGA的特点和区别

    说明ARM.DSP.FPGA的异同点 ARM(AdvancedRISCMachines) 是微处理器行业的一家知名企业,设计了大量高性能.廉价.耗能低的RISC处理器.相关技术及软件.ARM架构是面向 ...

  8. 单片机与ARM嵌入式,DSP,FPGA的联系与区别

    本文主要针对不同CPU架构以及现场可编程门阵列FPGA芯片区别与联系做一个介绍. MCU(Micro Controller Unit),又称单片微型计算机(Single Chip Microcompu ...

  9. Virtex—5 GTP和Virtex—6 GTX间匹配通信研究及应用

    针对Virtex-5 RocketIOTM GTP和Virtex-6 RocketIOTM GTX之间的差异性,需对预/去加重和接收均衡值.接收终端电压以及发送差分电压值等参数作出灵活调整,才能适应二 ...

最新文章

  1. 【如何管理开机自启动程序】
  2. Api管理工具(spring-rest-docs)
  3. Java_JDBC_MySql
  4. golang检查tcp是否可用_宕机处理:Kubernetes集群高可用实战总结
  5. java虚拟机工作原理图_Java虚拟机工作原理
  6. WSO2注册表安装简介
  7. gsonformat插件_裂墙推荐!IntelliJ IDEA 常用插件一览,让效率成为习惯
  8. 敏捷开发般若敏捷系列之五:如何推广敏捷(中)(无寿者,回报,破我执)...
  9. android opencl sdk,在新的Android Studio中使用OpenCL
  10. 生成 Bingo 卡片
  11. UNreal 创建一个简单的玻璃材质+金属材质+创建材质实例
  12. PG中XLOG日志结构
  13. 证券公司信息化——5
  14. HTML5期末大作业:在线电影介绍(6页) HTML+CSS+JavaScript 大学生毕设网页设计源码HTML web网页设计制作成品
  15. 微服务架构实践心得小结
  16. 自己装修需要做好哪些准备?极家精装好不好?
  17. 计算机毕业设计 汉语多音字注音研究
  18. 架构师的软实力之合作关系
  19. Spring认证中国教育管理中心-Spring Data Neo4j教程三
  20. Java获取视频的时长——日期时间处理

热门文章

  1. 2021春季学期-创新设计与实践-Lesson3
  2. 光电信标灯发光盘的特性电流测试
  3. 信标灯、三轮车、电容充电
  4. 新型超低功耗无线网卡诞生,一颗纽扣电池可撑数年
  5. 声音大小对于测距数值的影响
  6. python字符串endswith,Python字符串| 具有示例的endswith()方法
  7. 使用级联样式表的好处在于_现在都在使用益阳云终端解决方案了,原因就在于这些好处...
  8. Xilinx axi dma driver 驱动构建 (二)
  9. python3 UDP TCP 调试回射命令行
  10. python判断题题库大数据技术_智慧树知到_大数据分析的python基础_选择题答案