verilog - 在两个方向上将输入端口分配给输入输出
问题描述
出于模拟目的,使用 Verilog,我想创建一个只有 2 个输入输出端口(比如左和右)的块,并且将从左到右或从右到左传输信号。可以假设该块将仅在转换期间处于活动状态,并将在其余时间等待输入。但我不允许使用任何其他端口。所以模块定义理论上会是这样的:
module blackbox(inout left, inout right)
assign left = right;
assign right = left;
specify
(left => (right:1'b1)) = 7;
(right => (left:1'b1)) = 8;
endspecify
endmodule
有解决方案吗?
作为第二个问题,可以通过确定放置后的方向来简化问题。例如,如果将块放置在一个位置,它将始终从左到右传输信号,但在另一个位置,它可以从右到左传输。是否有可能在模块内以某种方式对其进行编码?
谢谢,
解决方案
在 Verilog 中
module blackbox(inout .left(internal), inout .right(internal));
wire internal;
specify
(left => (right:1'b1)) = 7;
(right => (left:1'b1)) = 8;
endspecify
endmodule
或者
module blackbox(inout left, right);
tran t(left,right); // some simulators might require this to work with specify block
specify
(left => (right:1'b1)) = 7;
(right => (left:1'b1)) = 8;
endspecify
endmodule
在 SystemVerilog 中:
module blackbox(inout left, right)
alias left = right;
specify
(left => (right:1'b1)) = 7;
(right => (left:1'b1)) = 8;
endspecify
endmodule
对于您的第二个问题,我不确定您为什么需要将其用于仿真模型,或者您如何将布局信息放入网表中。
推荐阅读
- spring - 在 Spring JPA 中限制并发查询
- rust - TryInto trait 要求更多类型注释,即使所有注释都已到位
- google-places-api - 在 Google Places API(JS 或 REST API,不是 Android)中获取文本描述
- css - 使用 VueJS 自定义工具提示的 CSS 问题
- node.js - 参数未在 discord.js v12 中完全显示
- reactjs - NPM 安装,完全未知 -E 前缀
- flutter - Flutter:参数类型'Future
Function()' 不能分配给参数类型'Future 功能()?' - python - 使用 to_parquet() 将 dask 数据帧写入镶木地板结果“RuntimeError:文件元数据仅在写入器关闭后可用”
- angular - Laravel 中间件无法按预期工作
- mysql - 使用计算字段连接同一个表会返回“重复”行