muuntaa VHDL

K

Kaiserin

Guest
Joku auttaa minua tämän koodin VHDL ..... Haluan cnvert tämä koodi verilog koodi ja i-kirjain dont osata kuinka .... HEELLLPPP

Tämä on koodi VHDL:

Koodi:

yksikkö vhdlmodule on

Port (CLKIN: in std_logic;

AN3: InOut std_logic;

AN2: InOut std_logic;

AN1: InOut std_logic;

AN0: InOut std_logic;

LED: out std_logic_vector (6 downto 0));

lopussa vhdlmodule;architecture Behavioral of vhdlmodule onsignaali CTR: std_logic_vector (12 downto 0);

aloittaa

Process (CLKIN)

aloittaa

jos CLKIN'event ja CLKIN = '1 'then

if (CTR = "0000000000000") niin

jos (AN0 = '0 ') then

AN0 <= '1 ';

LED <= "0101011";

AN1 <= '0 ';

elsif (AN1 = '0 ') then

AN1 <= '1 ';

LED <= "0101011";

AN2 <= '0 ';

elsif (AN2 = '0 ') then

AN2 <= '1 ';

LED <= "0001000";

AN3 <= '0 ';

elsif (AN3 = '0 ') then

AN3 <= '1 ';

LED <= "0000110";

AN0 <= '0 ';

end if;

end if;

CTR <= CTR "0000000000001";

jos (CTR> "1000000000000") jälkeen

CTR <= "0000000000000";

end if;

end if; - CLK'event ja CLK = '1 '

End process;

End Behavioral
 
Hi Kaiser,' after always @posedge

Älkää kuuluu "alkaa"
jälkeen aina @ posedge
ja lopussa ilmoitus on viimeinen ennen endmodule.Vain kokeilla sitä.

Ystävällisin terveisin,

 
Tämä koodi on merkitystä!Voisitteko selittää, mitä laitteistoa haluat
kuvata tämän koodin??Lisätään 8 minuuttia:Jos haluat vain käännös sitten täällä se menee .....
Koodi:

moduuli tahtiin (CLK,

AN0,

AN1,

AN2,

AN3,

MOSFET

)

InOut AN0, AN1, AN2, AN3;

input CLK;

output [6:0] LED;

reg [6:0] LED;reg [12:0] count;

reg AN0_r, AN1_r, AN2_r, AN3_r;

määrittää AN0 = AN0_r;

määrittää AN1 = AN1_r;

määrittää AN2 = AN2_r;

määrittää AN3 = AN3_r;aina @ (posedge CLK)

if (count == 13'h0) alkaa

if (! AN0) alkaa

AN0_r <= 1'b1;

LED <= 7'b0010010, / /

AN1_r <= 1'b0;

loppu

else if (! AN1) alkaa

AN1_r <= 1'b1;

LED <= 7'b0110001, / / C

AN2_r <= 1'b0;

loppu

else if (! AN2) alkaa

AN2_r <= 1'b1;

LED <= 7'b0011000; / / P

AN3_r <= 1'b0;

loppu

else if (! AN3) alkaa

AN3_r <= 1'b1;

LED <= 7'b0110000; / / E

AN0_r <= 0;

loppu

count <= count 13'b1;

if (count> 13'h1000) alkaa

count <= 13'h0;

loppu

varten / / if (count == 13'h0)

endmodule

 
Tavoitteena Tämän sorce koodi on kirjoittaa "Pace" on seitsemän segmentin LED-näyttö Spartan3 Board (aloitusväripakkausta alkaen Xilinx)
Koska seitsemän segmentin LED-näytöt ovat ajallisesti multipleksoidussa, minun täytyy "jotain" kertoa minulle kirjoittaa ensimmäinen merkki, niin mikä kertoo kirjoittaa toinen ja niin edelleen.Tämä on antanut kellon.
Että kellosignaalia Käytän 50MHz kellon jos laudalla.Valitettavasti tämä on liian nopea vaihtaa beteen numeroa johti paneelissa.Joten aion käyttää vasta nimeltä napsautussuhde, aina kun laskuri saavuttaa 2 ^ 13 muutan numeron näyttää, voin nollata laskuri.

Mutta se tapa aikaansaada ...... kun lataan vähän tiedosto aluksella minun 4 numeroa dont diplay oikeat tiedot (PACE)
Käytän ISE Webpack lomakkeella Xilinx.
Jos sinulla Gott jokin koodi, joka tekee, että .... Saisinko! (Muutamia selittää)

THXTämä on varoitus saan ..:

VAROITUS: Xst: 1710 - FF / Latch <LED_6> (ilman init-arvo) on vakio kentässä <pace>.
VAROITUS: Xst: 1895 - Koska muita FF / Latch koristeeksi, FF / Latch <AN0_r> (ilman init-arvo) on vakio kentässä <pace>.
VAROITUS: Xst: 1895 - Koska muita FF / Latch koristeeksi, FF / Latch <AN1_r> (ilman init-arvo) on vakio kentässä <pace>.
VAROITUS: Xst: 1895 - Koska muita FF / Latch koristeeksi, FF / Latch <LED_0> (ilman init-arvo) on vakio kentässä <pace>.
VAROITUS: Xst: 1895 - Koska muita FF / Latch koristeeksi, FF / Latch <LED_1> (ilman init-arvo) on vakio kentässä <pace>.
VAROITUS: Xst: 1895 - Koska muita FF / Latch koristeeksi, FF / Latch <LED_2> (ilman init-arvo) on vakio kentässä <pace>.
VAROITUS: Xst: 1895 - Koska muita FF / Latch koristeeksi, FF / Latch <LED_3> (ilman init-arvo) on vakio kentässä <pace>.
VAROITUS: Xst: 1895 - Koska muita FF / Latch koristeeksi, FF / Latch <LED_4> (ilman init-arvo) on vakio kentässä <pace>.
VAROITUS: Xst: 1895 - Koska muita FF / Latch koristeeksi, FF / Latch <LED_5> (ilman init-arvo) on vakio kentässä <pace>.
VAROITUS: Xst: 1895 - Koska muita FF / Latch koristeeksi, FF / Latch <count_0> (ilman init-arvo) on vakio kentässä <pace>.
VAROITUS: Xst: 1895 - Koska muita FF / Latch koristeeksi, FF / Latch <AN2_r> (ilman init-arvo) on vakio kentässä <pace>.
VAROITUS: Xst: 1895 - Koska muita FF / Latch koristeeksi, FF / Latch <AN3_r> (ilman init-arvo) on vakio kentässä <pace>.
VAROITUS: Xst: 1291 - FF / Lukon <count_1> ei liity kentässä <pace>.

 
Tutustu tämän koodin, tämä pitäisi toimia!
Tämä on kirjoitettu vanhaan PLD style!

Koodi:

moduuli tahtiin (CLK,

RST_n,

AN0,

AN1,

AN2,

AN3,

MOSFET

)

output AN0, AN1, AN2, AN3;

input CLK;

input RST_n;output [6:0] LED;

reg [6:0] LED;reg [12:0] count;

reg AN0, AN1, AN2, AN3;aina @ (posedge CLK tai negedge RST_n) alkaa

if (! RST_n) alkaa

AN0 <= 1'b0;

AN1 <= 1'b0;

AN2 <= 1'b0;

AN3 <= 1'b0;

count <= 0;

lopussa else alkaa

count <= count 1'b1;

Jos (ja määrä) alkaa

AN0 <= ~ | (AN0, AN1, AN2);

AN1 <= AN0;

AN2 <= AN1;

AN3 <= AN2;

varten / / if (count == 13'h0)

varten / / else:! if (! RST_n)

varten / / aina @ (posedge CLK tai negedge RST_n)

aina @ (/ * AS * / AN0 tai AN1 tai AN2 tai AN3) alkaa

LED = 7'b0000000;

tapauksessa (1'b1) / / Synopsys parallel_case

AN0: LED = 7'b0010010, / /

AN1: LED = 7'b0110001, / / C

AN2: LED = 7'b0011000; / / P

AN3: LED = 7'b0110000; / / E

endcase / / asia (1'b1)

loppu

endmodule / / vauhti

 
Tässä toinen lähestymistapa.En yleensä käytä rekisteröityä alkuarvot sijaan reset tulo.
Koodi:

moduuli Top (sys_clk, LED_Digit, LED_Segment);

input sys_clk;

reg [11:0] count = 0;

output reg [3:0] LED_Digit = 0;

output reg [7:0] LED_Segment;aina @ (posedge sys_clk) alkaa

count <= count 1;

if (count == 0) alkaa

if (! LED_Digit [2])

(LED_Digit, LED_Segment) <= (4'b0111, ~ 8'b11001110), / / P

else if (! LED_Digit [1])

(LED_Digit, LED_Segment) <= (4'b1011, ~ 8'b11101110), / /

else if (! LED_Digit [0])

(LED_Digit, LED_Segment) <= (4'b1101, ~ 8'b10011100), / / C

else if (! LED_Digit [3])

(LED_Digit, LED_Segment) <= (4'b1110, ~ 8'b10011110), / / E

loppu

loppu

endmodule

 
13 on bittien määrä, ja "H1000 on hex arvo.Joten 13'h1000 on 1000000000000 ja 13'h0 on 0000000000000.
Rekisteröidy määrä on 13 bittiä liikaa, niin "jos" lausunto on ok.

Esimerkin avulla, että ilmoitus on kaksi samanaikaista ja eri assigments laskea.Tämä voi toimia (Verilog toteuttaa ei-jarrut lausunnot ylhäältä alaspäin), mutta selvyyden vuoksi olin välttää tekemästä sitä.

 

Welcome to EDABoard.com

Sponsor

Back
Top