verilog - Verilog 高阻抗输入输出合成
问题描述
我通常不在verilog中使用inout或高阻抗状态进行综合(假设内部逻辑最终必须将其实现为标准CMOS 2状态逻辑)。
但是,我发现很多用于合成的 verilog,如下所示:
module top(
inout signal1,
inout signal2
);
submodule sub1 (
//outputs from sub1
signal1,
signal2
);
submodule sub2 (
//outputs from sub2
signal1,
signal2
);
endmodule
其中 signal1 和 signal2 仅被驱动到 1'b0 或 1'bz 并且它们在约束文件中被声明为开漏端口。
大多数合成工具都支持合成吗?我的目标是晶格CPLD,它似乎工作正常,但我很好奇其他工具是否可以合成这样的东西好吗?
您通常必须明确告诉工具上拉信号吗?或者这通常是没有必要的(我在我正在查看的代码中找不到任何关于引体向上的提及)
解决方案
FPGA 配备了可配置的 IO 组,根据使用约束文件指示工具的方式,您可能拥有“启用”选项。为了驱动开漏总线,通常使用三态缓冲器,其中 (1) 输出信号(指向总线)连接到常数零,(2) 使能信号(连接到三态缓冲器的使能)被认为是提供高阻(由物理总线实现,即上拉电阻)和强 0(来自我们的输出信号)之间切换的实际控制逻辑,(3)输入信号(指向我们的内部逻辑(用于数据采集和总线仲裁)。
在我参与的任何商业项目中,我从未见过在 RTL 代码中使用 1'bz 驱动的信号,我的建议是避免使用它,因为我相信总是有更传统的方法来处理它(仅使用逻辑 1 'b1 和 1'b0 结合三态缓冲器)
推荐阅读
- r - R: rnorm() 和 runif() 等 stats 包函数不起作用
- swagger - Spring REST Greeting 服务的简单招摇文档
- excel - 您如何获得 excel 文本中使用的不同 ThemeFonts?
- r - 如何使用 str_detect 在数据框中查找特定值
- python - 在熊猫中将2个标签组合成单个标签
- tensorflow - Tensorflow 对象检测 API - PYTHONPATH 在使用不同的终端时自行取消设置
- azure - Azure AD + ASP.Net Core 2.1 的未经授权的响应和无效的受众错误
- html - 全屏网页页脚的动态大小
- amazon-s3 - 用于 terraform 后端的 s3 存储桶的访问被拒绝
- ssl - NiFi ListenHTTP 处理器:使用不受支持的协议