Я новичок в ПЛИС, и недавно я попробовал очень простую программу с плавным светом, которая хорошо работала на моем компьютере. Однако светодиоды на моем Zybo остаются в исходном состоянии (светится только самый левый светодиод) независимо от того, как долго я жду. Я искал решение в течение недели и пытался найти способ позаимствовать другую доску у моего друга, но проблема просто существует.
Вот мой код verilog
top.v
module top(
input clk,
output [3:0] led
);
reg [23:0] cnt_reg;
reg [3:0] led_reg;
initial begin
cnt_reg <= 0;
led_reg <= 4'b1000;
end
always @(posedge clk)begin
if(cnt_reg == 24'h00000f)
begin
if(led_reg == 4'b0001)
led_reg <= 4'b1000;
else
led_reg <= led_reg>>1;
end
else
cnt_reg <= cnt_reg + 1;
end
назначить led = led_reg;
конечный модуль
Вот мое ограничение
set_property -dict { PACKAGE_PIN M14 IOSTANDARD LVCMOS33 } [get_ports { led[0] }]; #IO_L23P_T3_35 Sch=LED0
set_property -dict { PACKAGE_PIN M15 IOSTANDARD LVCMOS33 } [get_ports { led[1] }]; #IO_L23N_T3_35 Sch=LED1
set_property -dict { PACKAGE_PIN G14 IOSTANDARD LVCMOS33 } [get_ports { led[2] }]; #IO_0_35=Sch=LED2
set_property -dict { PACKAGE_PIN D18 IOSTANDARD LVCMOS33 } [get_ports { led[3] }]; #IO_L3N_T0_DQS_AD1N_35 Sch=LED3
set_property -dict { PACKAGE_PIN L16 IOSTANDARD LVCMOS33 } [get_ports { clk }]; #IO_L11P_T1_SRCC_35 Sch=sysclk
Вот мой испытательный стенд
`timescale 1ns/1ps
module tb();
reg clk;
wire [3:0] led;
top U0 (.clk(clk), .led(led));
parameter Period = 10;
always begin
clk = 1'b0;
#(Period/2) clk=1'b1;
#(Period/2);
end
initial begin
clk = 1'b0;
#1000000;
end
endmodule
И результат моделирования показан ниже: Результат моделирования
Послепрограммирование моего устройства Светодиоды просто остаются в исходном состоянии