如何用Handelc调用有inout类型的verilog模块

本文介绍了如何在Handel-C中调用Verilog模块,特别是针对具有inout类型的接口的情况。文章解释了Handel-C与Verilog模块之间的交互方式,并给出了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在handelc中可以直接调用verilog,vhdl,edif的现成模块,在这只说一下调用verilog模块的方法

Handel-C code
set clock = external "D17";                                                                                                   
unsigned 4 x;                                                                                                                 
interface verilog_component    
//verilog_component 是被调用的verilog模块的模块名                                                                                               

          (unsigned 4 return_val)     // verilog模块中的输出的接口,接口名称要与模块中的一致                                                                                          
     verilog_component_instance
          (unsigned 1 clk = __clock  //  verilog模块中的输入接口
          unsigned 4 sent_value = x) 
          with {busformat = "B_I"};     

对于只有input和output类型的verilog模块的调用非常简单,将对应的接口的名字直接写在输出接口和输入接口的位置就行了,但是如果verilog中声明了一个inout类型的接口,即该接口既可以做输入接口,也做输出接口(比如内存中的数据接口就是这样的)。

这时该如何调用呢???? 

例如:

inout[15:0] sdram_data;//这种接口既可以输入也可以输出数据,数据方向由具体程序去控制。

那么在用handelc调用此接口时就遇到了问题,因为在handelc中调用verilog的模块时,需要声明具体的输入,输出接口。
什么意思呢?就是说Handelc需要为verilog的input类型的接口提供数据输入,并且要有变量去接收verilog的输出output类型
只有这样才能建立正常完整的数据流。此时,verilog的程序并不直接与外部的输入输出接口(即硬件的输入输出接口)打交道了,而是与handelc定义的接口直连。然后handelc再去与外部硬件输入输出接口联系。handelc定义的接口为verilog模块提供数据输入,并且接收模块的输出数据。
此时,verilog模块在handelc眼里只有输入或输出,没有那种既可以输入也可以输出的接口,

那么像inout这种类型应该放入声明调用模块的输入接口里还是输出接口里呢???????答案在下边。

其实handelc本 身就可以定义双向数据接口:

interface bus_ts()......

这时verilog由于不与硬件直接打交道了,那么这种既能输入也能输出的双向数据接口的数据流向就让handelc去通过代码判断好了,verilog就没必要使用这种接口了,所以要将inout这种类型的接口改为input类型和output类型~~~然后再用Handelc程序调用。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值