Witam.
Dopiero zaczynam naukę programowania w verilog. Próbuję uruchomić jakiś pierwszy program ala "hello world".
Posiadam płytkę własnoręcznie wykonaną z XC2C32A oraz 8 przyciskową klawiaturą matrycową z tact switch i 4 diodami led.
Używam Xilinx ISE 12.3.
O ile miganie samymi diodami udało mi się uruchomić to mam problemy z uruchomieniem klawiatury. Aby uruchomić klawiaturę muszę ściągnąć przez pulldown linie SWITCH1-SWITCH4 oraz na LINE1-LINE2 dać Vcc.
Powyższy kod sypie następującymi warningami.
Nierozumiem dlaczego kompilator ignoruje PULLDOWN (znalazłem ten sposób ich ustawiania w internecie) oraz tego zamieszania z LEDS[0-3] przecież są wykorzystywane w "initial"?
Dopiero zaczynam naukę programowania w verilog. Próbuję uruchomić jakiś pierwszy program ala "hello world".
Posiadam płytkę własnoręcznie wykonaną z XC2C32A oraz 8 przyciskową klawiaturą matrycową z tact switch i 4 diodami led.
Używam Xilinx ISE 12.3.
O ile miganie samymi diodami udało mi się uruchomić to mam problemy z uruchomieniem klawiatury. Aby uruchomić klawiaturę muszę ściągnąć przez pulldown linie SWITCH1-SWITCH4 oraz na LINE1-LINE2 dać Vcc.
`timescale 100ns / 1ps
module led_toggle(
input SWITCH1 /* synthesis xc_pulldown = 1 */,
input SWITCH2 /* synthesis xc_pulldown = 1 */,
input SWITCH3 /* synthesis xc_pulldown = 1 */,
input SWITCH4 /* synthesis xc_pulldown = 1 */,
output reg LINE1,
output reg LINE2,
output reg[3:0] LEDS
);
initial begin
LINE1 <= 1;
LINE2 <= 1;
LEDS[0] <= 0;
LEDS[1] <= 1;
LEDS[2] <= 0;
LEDS[3] <= 1;
end
always @(posedge SWITCH4) begin
/*if( SWITCH1 == 0) LEDS[0] <= 0;
else LEDS[0] <= 1;
if( SWITCH2 == 0) LEDS[1] <= 0;
else LEDS[1] <= 1;*/
LEDS[3] <= ~LEDS[3];
end
endmodulePowyższy kod sypie następującymi warningami.
WARNING:Cpld:936 - The output buffer 'LINE2_OBUF' is missing an input and will
be deleted.
WARNING:Cpld:936 - The output buffer 'LINE1_OBUF' is missing an input and will
be deleted.
WARNING:Cpld:936 - The output buffer 'LEDS<2>_OBUF' is missing an input and will
be deleted.
WARNING:Cpld:936 - The output buffer 'LEDS<1>_OBUF' is missing an input and will
be deleted.
WARNING:Cpld:936 - The output buffer 'LEDS<0>_OBUF' is missing an input and will
be deleted.
WARNING:Cpld - PULLDOWN specified for net 'SWITCH4' conflicts with previous
KEEPER specification. PULLDOWN is ignored.
WARNING:Cpld - PULLDOWN specified for net 'SWITCH3' conflicts with previous
KEEPER specification. PULLDOWN is ignored.
WARNING:Cpld - PULLDOWN specified for net 'SWITCH2' conflicts with previous
KEEPER specification. PULLDOWN is ignored.
WARNING:Cpld - PULLDOWN specified for net 'SWITCH1' conflicts with previous
KEEPER specification. PULLDOWN is ignored.
WARNING:Cpld:1007 - Removing unused input(s) 'SWITCH1'. The input(s) are unused
after optimization. Please verify functionality via simulation.
WARNING:Cpld:1007 - Removing unused input(s) 'SWITCH2'. The input(s) are unused
after optimization. Please verify functionality via simulation.
WARNING:Cpld:1007 - Removing unused input(s) 'SWITCH3'. The input(s) are unused
after optimization. Please verify functionality via simulation.
Considering device XC2C32A-6-VQ44.
Re-checking device resources ...Nierozumiem dlaczego kompilator ignoruje PULLDOWN (znalazłem ten sposób ich ustawiania w internecie) oraz tego zamieszania z LEDS[0-3] przecież są wykorzystywane w "initial"?