我正在尝试使用Nexsys 2设计实验室(Spartan 3E 1200 FPGA)和Xilinx 12.4自学FPGA。我已经能够使用大多数基本功能,但似乎无法修改always
块中的寄存器,然后为其分配输出。这是我的简化代码,用于LED闪烁。
`timescale 1ns / 1ps
`define MHZ 33000
module VerilogFirst(
input clk,
output led5
);
reg myout = 1'b0;
reg[0:8] timer = 8'b00000000;
always @(posedge clk) begin
if (timer >= `MHZ) begin
myout <= ~myout;
timer <= 0;
end
else begin
myout <= myout;
timer <= timer + 1;
end
end
assign led5 = myout;
endmodule
还有UCF:
NET "clk" LOC = "B8";# Bank = 0, Pin name = IP_L13P_0/GCLK8, Type = GCLK, Sch name = GCLK0
NET "led5" LOC = "P15";# Bank = 1, Pin name = IO, Type = I/O, Sch name = LD4? s3e500 only
一切正常,但是当我尝试生成位流时,出现错误,指出LED未连接任何东西。
ERROR:PhysDesignRules:368 - The signal <led5_OBUF> is incomplete. The signal is not driven by any source pin in the design.
ERROR:PhysDesignRules:10 - The network <led5_OBUF> is completely unrouted.
ERROR:Bitgen:25 - DRC detected 2 errors and 1 warnings. Please see the previously displayed individual error or warning messages for more details.
答案 0 :(得分:3)
33000的常数MHZ
不适合9位寄存器timer
。
因此timer
永远不会超过该值,myout
永远不会翻转。永远也不会使用计时器值,因为它的值不会影响任何事情,因此编译器将完全优化所有内容。甚至clk
信号都将保持闲置状态,您将收到有关此警告。