verilog - 系统verilog开关不改变
问题描述
如果开关打开,此代码用于打开 LED。这是顶级模块。
module myb(
input clk,
input execute,
input switch,
output reg k
);
logic [5:0] led;
always@(posedge clk)
begin
if(switch)
led[0] = 1;
end
endmodule
这是约束
set_property PACKAGE_PIN U16 [get_ports {led[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}]
set_property PACKAGE_PIN E19 [get_ports k]
set_property IOSTANDARD LVCMOS33 [get_ports k]
set_property PACKAGE_PIN U19 [get_ports {led[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[2]}]
set_property PACKAGE_PIN V19 [get_ports {led[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[3]}]
set_property PACKAGE_PIN T18 [get_ports execute]
set_property IOSTANDARD LVCMOS33 [get_ports execute]
#------------------------------------------------------------
#---------------------- Clock signal ------------------------
#------------------------------------------------------------
set_property PACKAGE_PIN W5 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [ get_ports clk]
create_clock -period 10.000 -name sys_clk_pin -waveform {0.000 5.000} -add [get_ports clk]
set_property PACKAGE_PIN V17 [get_ports {switch]
set_property IOSTANDARD LVCMOS33 [get_ports {switch]
但不知何故,什么都没有改变。我也用按钮、去抖动器等尝试过。我做错了什么?
解决方案
正如 Serge 所说:对于来自 FPGA 的信号,您的顶部模块应该有一个输出端口。你的工具没有给你警告或错误吗?因为您的约束无法实现!
其次,我会产生两个输出:一个高,一个低。这保证至少有一个 LED 会亮起。
确保彻底检查端口到 FPGA 引脚的映射。除了编码错误之外,它是 I/O 引脚不工作时最常见的错误来源。
你很擅长回到基本代码来测试你的 I/O。这才是正确的调试方式。你本可以多走一步,也可以省略时钟。只是:assign led = 6'b101010;
然后在你让他们工作后添加时钟。
最后一句话:您的输出k
未使用且未定义。
推荐阅读
- r - 如何在 R 中使用 group_by 和汇总进行行求和
- azure - 使用 Azure 函数导出 CSV
- python - 视图 shop.views.product_list 没有返回 HttpResponse 对象。它返回 None 而不是
- javascript - 从 onclick 函数传递值并使用 javascript 复制该值
- python - 结帐和订单表的数据库设计
- python - python中的INVALID文字没有被删除
- c++ - 为什么需要链接库?
- c# - 用于从字符串中选择数字模式的正则表达式
- enums - 在 Julia 中将枚举转换为符号
- javascript - message.member.roles 未填充