logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

CoolRunner II - Verilog: Jak uruchomić klawiaturę matrycową z pulldown?

polimorf 18 Lip 2011 22:13 1910 4
REKLAMA
  • #1 9733023
    polimorf
    Poziom 13  
    Posty: 136
    Pomógł: 3
    Ocena: 1
    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.


    `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
    endmodule


    Powyż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"?
  • REKLAMA
  • #2 9733219
    tymon_x
    Poziom 30  
    Posty: 1021
    Pomógł: 171
    Ocena: 15
    polimorf napisał:
    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"?

    A datasheet kolega oglądał ? I takie rzeczy robi się w *.ucf jeśli chodzi o Xilinx ISE.

    Na przykład Pull-up:
    NET moj_sygnal PULLUP; 
  • REKLAMA
  • #3 9733297
    polimorf
    Poziom 13  
    Posty: 136
    Pomógł: 3
    Ocena: 1
    Dzięki za podpowiedź.

    #PACE: Start of Constraints generated by PACE
    
    #PACE: Start of PACE I/O Pin Assignments
    NET "LEDS<0>"  LOC = "P27" | IOSTANDARD = LVCMOS33 ; 
    NET "LEDS<1>"  LOC = "P28" | IOSTANDARD = LVCMOS33 ; 
    NET "LEDS<2>"  LOC = "P29" | IOSTANDARD = LVCMOS33 ; 
    NET "LEDS<3>"  LOC = "P30" | IOSTANDARD = LVCMOS33 ; 
    NET "LINE1"  LOC = "P23" | IOSTANDARD = LVCMOS33 ; 
    NET "LINE2"  LOC = "P22" | IOSTANDARD = LVCMOS33 ; 
    NET "SWITCH1"  LOC = "P18" | IOSTANDARD = LVCMOS33 | PULLDOWN = yes; 
    NET "SWITCH2"  LOC = "P19" | IOSTANDARD = LVCMOS33 | PULLDOWN = yes; 
    NET "SWITCH3"  LOC = "P20" | IOSTANDARD = LVCMOS33 | PULLDOWN = yes; 
    NET "SWITCH4"  LOC = "P21" | IOSTANDARD = LVCMOS33 | PULLDOWN = yes; 
    
    #PACE: Start of PACE Area Constraints
    
    #PACE: Start of PACE Prohibit Constraints
    
    #PACE: End of Constraints generated by PACE
    


    Niestety dalej te same warningi - i zignorowało pulldown
    Cytat:
    WARNING:Cpld - PULLDOWN specified for net 'SWITCH1' conflicts with previous
    KEEPER specification. PULLDOWN is ignored.
  • REKLAMA
  • Pomocny post
    #4 9733335
    tymon_x
    Poziom 30  
    Posty: 1021
    Pomógł: 171
    Ocena: 15
    /* synthesis xc_pulldown = 1 */

    NET "SWITCH1"  LOC = "P18" | IOSTANDARD = LVCMOS33 | PULLDOWN = yes;

    Tam jest tylko weak pull-up:
    CoolRunner II - Verilog: Jak uruchomić klawiaturę matrycową z pulldown?
  • #5 9734122
    polimorf
    Poziom 13  
    Posty: 136
    Pomógł: 3
    Ocena: 1
    Tak faktycznie CoolRunner II ma tylko pullup'y - dzięki.

    Zainstalowałem też najnowszą wersję Xilinx ISE - nadal ten sam warning - teraz z PULLUP'ami.

    Plik x.ucf modyfikowałem za pomocą narzędzia xilinx PACE i w pliku nie występują żadne dyrektywy KEEPER.

    Cytat:
    WARNING:Cpld - PULLUP specified for net 'SWITCH4' conflicts with previous KEEPER
    specification. PULLUP is ignored.
    WARNING:Cpld - PULLUP specified for net 'SWITCH3' conflicts with previous KEEPER
    specification. PULLUP is ignored.
    WARNING:Cpld - PULLUP specified for net 'SWITCH2' conflicts with previous KEEPER
    specification. PULLUP is ignored.
    WARNING:Cpld - PULLUP specified for net 'SWITCH1' conflicts with previous KEEPER
    specification. PULLUP 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) 'SWITCH3'. The input(s) are unused
    after optimization. Please verify functionality via simulation.
    WARNING:Cpld:1007 - Removing unused input(s) 'SWITCH4'. The input(s) are unused
    after optimization. Please verify functionality via simulation.


    Zmieniłem także wartości właściwości strategii fit na:
    Cytat:
    Unused I/O Pad Termination Mode: pullup
    Input and Tristate Termination Mode: pullup

    Jednak nadal bez zmian.

    ...

    Dobra działa.
    Należało ustawić 2 wyżej wymienione właściwości w Fit->Process Properties
REKLAMA