首先,这是我的第一个项目,我有0次verilog经验。我的教授从不教我们verilog,但他无论如何都给了我们项目。所以我真的需要一些帮助
我使用vivado 2014.4和basys 3 board。我的目标是当我按下一个按钮时,4-7段显示亮起。
这是我根据3小时的研究写的
约束文件
#Push button
set_property PACKAGE_PIN V17 [get_ports {pb}]
set_property IOSTANDARD LVCMOS33 [get_ports {pb}]
#7 segment display
set_property PACKAGE_PIN W7 [get_ports {seg[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[0]}]
set_property PACKAGE_PIN W6 [get_ports {seg[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[1]}]
set_property PACKAGE_PIN U8 [get_ports {seg[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[2]}]
set_property PACKAGE_PIN V8 [get_ports {seg[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[3]}]
set_property PACKAGE_PIN U5 [get_ports {seg[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[4]}]
set_property PACKAGE_PIN V5 [get_ports {seg[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[5]}]
set_property PACKAGE_PIN U7 [get_ports {seg[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[6]}]
set_property PACKAGE_PIN V7 [get_ports {seg[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[7]}]
set_property PACKAGE_PIN U2 [get_ports {an[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {an[0]}]
set_property PACKAGE_PIN U4 [get_ports {an[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {an[1]}]
set_property PACKAGE_PIN V4 [get_ports {an[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {an[2]}]
set_property PACKAGE_PIN W4 [get_ports {an[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {an[3]}]
然后我陷入设计源
`timescale 1ns/ 1ps
module project (
input pb,
output [7:0] seg,
output [2:0] an
);
-I have no idea how to translate this pseudocode to verilog
if (pb == 1) begin
seg[7:0] = 8'b00001111;
an[0] = seg;
end
这就是整个想法,但我不知道如何写它。请帮帮我,谢谢
答案 0 :(得分:0)
为了让您入门,请参阅下面的代码。将pb
保持为1以使输出更改,释放和输出返回到零。
你可能应该在那里添加一个时钟,这样你就可以去抖动,或者至少把pb
放到一些元稳定触发器上。
an
是3位宽,但你有1位指向伪代码中的8位seg。我已经评论说,因为不确定它是什么意思。
module project (
input pb,
output [7:0] seg,
output [2:0] an
);
always @* begin
if (pb == 1) begin
seg[7:0] = 8'b00001111;
//an[0] = seg;
end
else begin
seg[7:0] = 8'b0;
//an = 'b0;
end
end
endmodule
您可能希望在Verilog in one day上阅读Verilog。