Почему я не могу подключить регистр к выходу в Verilog? - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь научить себя ПЛИС, используя дизайн-лабораторию Nexsys 2 (Spartan 3E 1200 FPGA) и Xilinx 12.4.Мне удалось заставить работать большинство основных функций, но я не могу изменить регистр в блоке always и назначить ему выход.Вот мой урезанный код для мигающего светодиода.

`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

Все работает нормально, но когда я пытаюсь сгенерировать битовый поток, я получаюошибка, указывающая на то, что светодиод не подключен ни к чему.

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.

1 Ответ

0 голосов
/ 22 февраля 2019

Константа MHZ из 33000 не помещается в 9-битный регистр timer.

Так что timer никогда не может превысить это значение, myout никогда не будет отображаться.Значение таймера также никогда не используется, потому что его значение ни на что не влияет, поэтому компилятор полностью оптимизирует все.Даже сигнал clk останется неиспользованным, и вы получите предупреждение об этом.

...