您当前的位置:五五电子网电子知识电子学习基础知识电脑-单片机-自动控制SystemC-存储器接口实例 正文
SystemC-存储器接口实例

SystemC-存储器接口实例

点击数:7601 次   录入时间:03-04 11:47:04   整理:http://www.55dianzi.com   电脑-单片机-自动控制

      下面我们来看一个接口实例。

      我们首先定义一个存储器读接口mem_read_if,然后定义一个存储器的写接口mem_write_if,接着定义一个存储器的复位接口reset_if,最后利用前面的三个接口定义随机存取存储器的接口ram_if。

  1. //By Chenxi,all rights reserved  
  2. //mem_if.h----define memory interface  
  3. #ifndef _MEM_IF_H  
  4. #define _MEM_IF_H  
  5. #include "systEMC.h"   
  6.  
  7. enum transfer_status { TRANSFER_OK = 0, TRANSFER_ERROR};   
  8.  
  9. template <class T>  
  10. class mem_read_if:  publIC sc_interface  
  11. {public:   
  12. virtual transfer_status read(unsigned int address,T& data) = 0;  
  13. };   
  14.  
  15. template <class T>  
  16. class mem_write_if: public sc_interface  
  17. {public:   
  18. virtual transfer_status write(unsigned int address, T& data) = 0;  
  19. };   
  20.  
  21. class reset_if:  public sc_interface  
  22. { public:  
  23.    virtual bool reset()=0;  
  24. };   
  25.  
  26. template<class T>  
  27. class ram_if: public mem_write_if<T>, mem_read_if<T>, reset_if{  
  28. public:  
  29.     virtual unsigned int start_address() const = 0;  
  30.     virtual unsigned int end_address() const = 0;  
  31. };   
  32.  
  33. #endif   

      从上面存储器接口的定义中我们也可以看出,接口是可以分层的,复杂的接口可以由多个简单的接口继承而得到。我们下面来看一个只读存储器Rom的接口。

  1. template<class T>  
  2. class rom_if : public mem_read_if<T>, reset_if{  
  3. public:  
  4. virtual unsigned int start_address() const = 0;  
  5. virtual unsigned int end_address() const = 0;  
  6. }; 


      它只提供了读方法。

      如果该存储器是支持突发传输(一次传输多个数据单元)的,则它的接口可以定义如下

  1. template<class T>  
  2. class burst_ram_if: public ram_if<T>{  
  3. public:  
  4. virtual transfer_status burst_read(unsigned int address,unsigned int length,T& data) = 0;  
  5. virtual transfer_status burst_write(unsigned int address,unsigned int length,T& data) = 0;  
  6. };  


      我们将mem_read_if和mem_write_if定义为模板类是因为抽象的存储器的每一个单元可以存储的内容可以是任何类,如存储一个字节char,一个半字short,一个字int甚至是抽象数据类型如下定义的一个数据包PACket。

  1. #define MAX_LENGTH 1504  
  2. Struct packet{  
  3. char[6] source_addr;  
  4. char[6] destination_addr;  
  5. int    length;  
  6. char* payload;  



本文关键字:存储器  接口  电脑-单片机-自动控制电子学习 - 基础知识 - 电脑-单片机-自动控制

上一篇:SystemC-sc_interface