SystemC中的端口和信号


芯片通过管脚与电路板上其它芯片或者元件通信,管脚有输入、输出和双向管脚。在SystEMC中,模块通过端口(Port)与其它模块通信。端口也分为输入(input)、输出(output)和双向端口(inout)。一个模块的端口或者通过信号(Signal)与其它模块的端口相连(其逻辑关系如图1),或者与子/父模块的端口直接相连(其逻辑关系如图2)。端口与信号的连接,以及端口和端口的直接连接在SystEMC中称作绑定。

图2端口和端口直接相连

端口的数据类型可以是以下类型:
(1)常见C++数据类型,如long、int、char、short、float、double。

(2)SystemC专有数据类型,如sc_int<n>、sc_uint<n>、sc_bigint<n>、sc_biguint<n>、sc_bit、sc_logIC、sc_bv<n>、sc_lv<n>、sc_fixed、sc_ufixed、sc_fix、sc_ufix。

(3)用户自定义结构。如

  1. typedef struct _frame{
  2. unsigned short frame_control;
  3. unsigned short duration_id;
  4. char source_addr[6];
  5. char destination_addr[6];
  6. unsigned short sequence_control;
  7. char* body;
  8. unsigned fcs;
  9. } frame;

SystemC还支持抽象端口。假设接口direct_if的定义如下:

  1. class direct_if
  2. : public virtual sc_interface
  3. {
  4. public:
  5. // direct BUS/Slave interface
  6. virtual bool direct_read(int *data, unsigned int address) = 0;
  7. virtual bool direct_write(int *data, unsigned int address) = 0;
  8. }; // end class direct_if
  9. #endif

那么下面的代码定义了一个抽象端口:
sc_port<direct_if> arbiter_port;

SystemC的端口定义了与特定端口类型相关的方法,如read()和write()都是基本的端口类型sc_in,sc_out,sc_inout的方法。下面的语句是等效的。
mem[addr.read()]=wr_data.read();
mem[addr.read()]=wr_data;//C++编译器提供默认转换

而下面的语句是非法的:
mem[addr]=wr_data.read();

因为addr是sc_uint<8>类型,而数组的索引是unsigned int,C++编译器不能识别该默认转换。

SystemC端口的定义方法如下:

(1)输入端口:sc_in<端口数据类型> 端口名;

(2)输出端口:sc_out<端口数据类型> 端口名;

(3)双向端口:sc_inout<端口数据类型>端口名;

(4)特殊情况:时钟的定义可以如下sc_in_clk 时钟名字;

如sram8x256中的端口定义:

  1. sc_in_clk clk;
  2. sc_in<bool> wr_en;
  3. sc_in<sc_uint<8> > wr_data;
  4. sc_in<sc_uint<8> > addr;
  5. sc_out<sc_uint<8> > rd_data;

SystemC的端口和信号定义中大量的使用了模版类,如sc_in<sc_uint<8> > addr。端口和信号的类型在一对尖括号(<>)中表示。sc_unit<8>中的8代表数据只有8位。注意在声明中sc_in<sc_uint<8> >中间有一个额外的空格,这是必须的。

有时候需要声明一个端口向量,如计算机的数据和地址总线,这在SystemC中也是允许的,举例如下:

sc_in<sc_logic> a[32];

这句代码声明了a[0]到a[31]这32个端口,端口方向为输入,端口数据类型为sc_logic。信号也可以使用类似的办法声明:

sc_signal<sc_logic> addr[16];

上面这句代码声明了addr[0]到addr[15]这16个信号,信号类型为sc_logic。

Related Articles

SystemC中的绑定

06/15 00:37
端口与信号的连接,以及端口到端口的直接连接在在SystEMC中都称作绑定.绑定方法分为位置关联和名字关联.位置关联是一种隐含关联,节省代码但是在设计较为复杂时容易出错:而名字是一种显式关联,代码量多但是能够保证正确性.在实际设计中,更多的使用名字关联. 下面讲述这两种关联的具体用法. 顾名思义,名字关联就是让端口和信号的名字一一对应来,比如PWB_slave_if->wr_en(sram_wr_en)就是将pwb_slave_if的端口wr_en与信号sram_wr_en连接在一起.使用名字关联

SystemC中的信息和差错报告机制

10/03 06:48
在 SystEMC 仿真中,常常需要打印和报告仿真进度信息,发生错误时打印错误原因并停止仿真. SystEMC 中定义了5个默认宏用于打印和报告事件信息以及事件的严重程度,它们是: SC_REPORT_INFO( msg_type , msg ) SC_REPORT_WARNING( msg_type , msg ) SC_REPORT_ERROR( msg_type , msg ) SC_REPORT_FATAL( msg_type , msg ) sc_assert( expr ) msg_

SystemC中的接口

12/01 23:08
接口实际上是C++中的抽象类.在C++中,不是所有类都有实际的意义.有一种类表达的是一种根本不存在的抽象概念,即所谓抽象类.一个抽象类的例子如Shape,它本身作为一个抽象的形状是没有意义的,只有具体化成具体的形状如圆类Circle或者三角形类Triangle才有意义. Shape作为抽象类,其定义可以如下: class Shape{ publIC: virtual void rotate (int) =0; virtual void draw (int) =0; virtual void is

SystemC中的DELTA延迟

11/13 11:57
DELTA延迟是硬件描述语言中一个非常重要的概念,它是模块的端口(和信号)与模块内数据的重要区别之一.DELTA延迟在所有硬件描述语言包括SystEMC中都适用.

佳能ZC-999G卫星接收机通电显示正常.RF端口无信号输出

03/19 22:19
佳能ZC-999G卫星接收机通电显示正常.RF端口无信号输出
通电测得该机音频.视频信号混合集成电路IC2(TA8637BP)各脚电压均正常,无意中手碰了一下晶振XTAL1(38MHz)的金属外壳,RF端口竟有正常的调制信号输出.只要不关断该机电源可以一直正常工作,关机后再开机RF端口又无信号输出,再用手摸一下XTAL1外壳,RF端口又有信号输出,更换XTALI后故障排除.试在XTAL1外壳与电路板地之间用焊锡焊牢,故障也可以排除,有关IC2外围电路如下图所示.

FPGA中inout端口使用方法总结

06/25 12:53
INOUT引脚: 1.FPGA IO在做输入时,可以用作高阻态,这就是所说的高阻输入: 2.FPGA IO在做输出时,则可以直接用来输入输出. 芯片外部引脚很多都使用inout类型的,为的是节省管腿.就是一个端口同时做输入和输出. inout在具体实现上一般用三态门来实现.三态门的第三个状态就是高阻'Z'.当inout端口不输出时,将三态门置高阻.这样信号就不会因为两端同时输出而出错了,更详细的内容可以搜索一下三态门tri-state的资料. 1 使用inout类型数据,可以用如下写法: ino

仿真系统中基于PCI1721的信号测试解析

05/12 10:47
内容摘要:为提高训练效果,仿真训练系统中需进行信号波形测试.在介绍PCI1721板卡基本功能及主要特点的基础上,介绍了VB编程结合PCI1 721总线扩展实现信号产生的方法,给出了信号产生软件实现的基本方法.PCI1721实现多通道输出的方法以及VRML和VB交互的实现方法,便于以后功能扩展.为保证输出波形满足要求,实现脉冲信号.视频信号.检波信号等模拟信号的选择输出,设计了整形电路.这样既可以实现虚拟测试又可以实现真正测试. 关键词:仿真系统:信号测试:总线扩展:整形电路 在电子设备模拟仿真系

核心路由器中多端口线卡调度的设计与实现

12/18 18:45
引言 线路接口卡是核心 路由器 访问线路与访问设备间的一种设备接口,主要实现路由器接口上物理层和链路层的功能,必须实现无丢包线速处理,是路由器的关键部件之一. 线卡 主要关注以下几个方面:排队(如FIFO.Modified DefICit Round Robin).拥塞控制(如加权随机早期检测)及其它特性(如访问列表.访问速率.数据流统计). IPv6路由器系统结构主要由线路接口.多功能转发处理.高速交换网络.内部通信.主控和网管等部分组成. ATM 多端口线卡作为IPv6核心路由器的重要线路接

熊猫C74L1型彩电,图像中间偏左部位有一黑色阴影,外形似树叶,其形状大小在不断变化,有时图像中部会出现消隐信号.

12/06 22:06
经查为沙堡脉冲取样电路中C416电容变质,换为同型号电容,故障排除.