c++ - 错误:(E107)绑定接口到端口失败:模块“simple_instance.data_in_reg”的端口4上的类型不匹配
问题描述
我想在 register_out 中读取总线并在 register_in 中写入总线,但是我在 register_in 的端口 4 上出现类型不匹配错误
注册.hpp 文件
#pragma once
#include<systemc.h>
#include"bus.hpp"
class Register:public sc_module{
private:
sc_port<sc_signal_in_if<sc_logic>> clk,rst,lden;
sc_port<sc_signal_in_if<sc_lv<8>>> in_load;
sc_port<sc_signal_write_if<sc_lv<8>>> out;
public:
SC_CTOR(Register){
SC_METHOD(eval);
sensitive<<clk<<rst;
}
void eval(){
if(rst->read()=='1')
out->write(0);
else if(clk->event() && clk->read()=='1')
out->write(in_load->read());
}
};
test_module 头文件
#pragma once
#include<systemc.h>
#include"Register.hpp"
class test_module:public sc_module{
sc_port<sc_signal_in_if<sc_logic>> clk,rst,lden_in,lden_out;
sc_port<sc_signal_in_if<sc_lv<8>>> data_in;
sc_port<sc_signal_write_if<sc_lv<8>>> data_out;
sc_port<sc_signal_inout_if<sc_lv<8>>> bus;
public:
Register *data_in_reg,*data_out_reg;
SC_CTOR(test_module){
data_in_reg=new Register("data_in_reg");
(*data_in_reg)(clk,rst,lden_in,data_in,bus); // ERROR
data_out_reg=new Register("data_out_reg");
(*data_out_reg)(clk,rst,lden_out,bus,data_out);
}
};
解决方案
我将sc_port<sc_signal_in_if>替换为sc_in并将sc_port<sc_signal_write_if>替换为sc_out并制作总线到sc_inout并且它的工作。但我有疑问为什么这种方式有效但是通过使用 sc_port 和接口我得到了不匹配错误
推荐阅读
- c# - 在 windows sdk (Windows 1903) 中没有找到引用
- android - Android 融合位置更新
- php - 当我尝试将 Crinsane/LaravelShoppingcart 包含到我的 laravel 项目中时出现此错误:
- json - 在 Flutter / Dart 中解析列表
- python - 从多索引数据框中选择列,例如制作直方图
- angular - angular Rxjs tap 保证运行代码部分
- node.js - Mongoose:如何删除具有某些字段值的所有文档
- javascript - JavaScript 从字符串中删除元音
- json - 如何在批处理脚本中读取 JSON 数据
- sql - SQL查询缺少选择语句获取数据错误