7段显示LED,需要一些解释

时间:2015-01-25 21:47:04

标签: verilog system-verilog

首先,这是我的第一个项目,我有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

这就是整个想法,但我不知道如何写它。请帮帮我,谢谢

1 个答案:

答案 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。