2015-01-25 4 views
0

우선이 모든 것이 내 첫 번째 프로젝트이며, 나는 Verilog의 경험이 0이다. 내 교수는 결코 우리에게 Verilog를 가르쳐주지 않지만 그는 프로젝트를 아무렇게나내어 줬다. 그래서 나는 정말로 도움이 필요하다.
나는 vivado 2014.4 및 basys 3 보드를 사용합니다. 내 목표는 내가 push_botton을 칠 때 4-7 개의 세그먼트가 빛을 발한다.
이 내가 디자인 소스 전체를 생각7 세그먼트 디스플레이 LED, 일부 explaination 필요

`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 

에 갇혀 연구 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]}] 

그리고에 기반을 쓴하지만 난 몰라 그것을 쓰는 방법. 제발 도와주세요, 덕분에

답변

0

아래의 코드를 참조하십시오. pb을 1로 유지하면 출력이 변경되고 해제 및 출력은 0으로 되돌아갑니다.

디버깅을하거나 최소한 메타 안정성 플립 플롭을 통해 pb을 입력 할 수 있도록 시계를 추가해야합니다.

an은 3 비트 너비이지만 의사 코드에서는 8 비트를 가리킬 때 1 비트를 사용했습니다. 그게 무슨 뜻인지 확실하지 않은 줄을 주석 처리했습니다.

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에서 Verilog in one day으로 읽는 것이 좋습니다.

+0

어쨌든 항상 켜져 있습니다. – thekay

+0

그리고 1 가지 더, 어떻게 (양극) 값을 수정하지 않으면 7 세그먼트 디스플레이가 불이 붙을 수 있습니까? – thekay

관련 문제