konvertere fra verilog til vhdl plzz!

T

the_phoenix

Guest
hey guys, jeg har brug for omgående hjælp.

Jeg er en nybegynder på VLSI, og så vidt jeg er bekymret, jeg har gjort mig ret i stand til vhdl.Jeg planlægger at reaslise følgende projekt. Dette sker for at være mit første projekt med vhdl alligevel.

link:: h ** p: / / www.fpga4fun.com/PongGame.html

Nu, jeg savn u plz at konvertere denne (mindst skelettet af koden) i vhdl, så jeg kan se på en meget simpel implemetation.
Plzz hjælp mig med oversættelse af koden i vhdl.

skål

nogen forslag til mulige kredsløb addons vil blive meget værdsat!

 
Jeg spørger mig selv, hvorfor du ønsker at gøre det!Simulatorer kan arbejde med blandede design og også syntese værktøjer kan syntese af blandet HDL-kode!

 
Her det går .....
oversættelse af pong.v
gøres med x-hdl eval version!

Kode:

ENTITY pong IS

PORT (

CLK: IN std_logic;

vga_h_sync: OUT std_logic;

vga_v_sync: OUT std_logic;

vga_R: OUT std_logic;

vga_G: OUT std_logic;

vga_B: OUT std_logic;

quadA: IN std_logic;

quadB: IN std_logic);

SLUT pong;ARKITEKTUR oversat AF pong ISKOMPONENT hvsync_generator

PORT (

CLK: IN std_logic;

vga_h_sync: OUT std_logic;

vga_v_sync: OUT std_logic;

inDisplayArea: OUT std_logic;

CounterX: OUT std_logic_vector (9 downto 0);

CounterY: OUT std_logic_vector (8 downto 0));

END COMPONENT;SIGNAL inDisplayArea: std_logic;

SIGNAL CounterX: std_logic_vector (9 downto 0);

SIGNAL CounterY: std_logic_vector (8 downto 0);

SIGNAL PaddlePosition: std_logic_vector (8 downto 0);

SIGNAL quadAr: std_logic_vector (2 downto 0);

SIGNAL quadBr: std_logic_vector (2 downto 0);

SIGNAL ballX: std_logic_vector (9 downto 0);

SIGNAL Bally: std_logic_vector (8 downto 0);

SIGNAL ball_inX: std_logic;

SIGNAL ball_inY: std_logic;

SIGNAL ball: std_logic;

SIGNAL border: std_logic;

SIGNAL padle: std_logic;

SIGNAL BouncingObject: std_logic;

SIGNAL ResetCollision: std_logic;

SIGNAL CollisionX1: std_logic;

SIGNAL CollisionX2: std_logic;

SIGNAL CollisionY1: std_logic;

SIGNAL CollisionY2: std_logic;

SIGNAL UpdateBallPosition: std_logic;

SIGNAL ball_dirX: std_logic;

SIGNAL ball_dirY: std_logic;

SIGNAL temp_xhdl12: std_logic;

SIGNAL temp_xhdl13: std_logic;

SIGNAL R: std_logic;

SIGNAL G: std_logic;

SIGNAL B: std_logic;

SIGNAL vga_h_sync_xhdl1: std_logic;

SIGNAL vga_v_sync_xhdl2: std_logic;

SIGNAL vga_R_xhdl3: std_logic;

SIGNAL vga_G_xhdl4: std_logic;

SIGNAL vga_B_xhdl5: std_logic;BEGIN

vga_h_sync <= vga_h_sync_xhdl1;

vga_v_sync <= vga_v_sync_xhdl2;

vga_R <= vga_R_xhdl3;

vga_G <= vga_G_xhdl4;

vga_B <= vga_B_xhdl5;

syncgen: hvsync_generator

PORT MAP (

clk => CLK,

vga_h_sync => vga_h_sync_xhdl1,

vga_v_sync => vga_v_sync_xhdl2,

inDisplayArea => inDisplayArea,

CounterX => CounterX,

CounterY => CounterY);PROCESSEN

BEGIN

Vente (clk'EVENT og CLK = '1 ');

quadAr <= quadAr (1 downto 0) & quadA;

END PROCESS;PROCESSEN

BEGIN

Vente (clk'EVENT og CLK = '1 ');

quadBr <= quadBr (1 downto 0) & quadB;

END PROCESS;PROCESSEN

BEGIN

Vente (clk'EVENT og CLK = '1 ');

IF ((((quadAr (2) XOR quadAr (1)) XOR quadBr (2)) XOR quadBr (1)) = '1 ') THEN

IF ((quadAr (2) XOR quadBr (1)) = '1 ') THEN

IF (IKKE and_br (PaddlePosition) = '1 ') THEN

PaddlePosition <= PaddlePosition "000.000.001";

END IF;

ELSE

IF (or_br (PaddlePosition) = '1 ') THEN

PaddlePosition <= PaddlePosition - "000000001";

END IF;

END IF;

END IF;

END PROCESS;PROCESSEN

BEGIN

Vente (clk'EVENT og CLK = '1 ');

HVIS (ball_inX = '0 ') THEN

ball_inX <= to_stdlogic (CounterX = ballX) OG ball_inY;

ELSE

ball_inX <= to_stdlogic (IKKE (CounterX = ballX "0000010000"));

END IF;

END PROCESS;PROCESSEN

BEGIN

Vente (clk'EVENT og CLK = '1 ');

HVIS (ball_inY = '0 ') THEN

ball_inY <= to_stdlogic (CounterY = Bally);

ELSE

ball_inY <= to_stdlogic (IKKE (CounterY = Bally "000.010.000"));

END IF;

END PROCESS;

ball <= ball_inX OG ball_inY;

border <= to_stdlogic ((CounterX (9 downto 3) = "0.000.000") ELLER (CounterX (9 downto 3) = "1.001.111") ELLER (CounterY (8 downto 3) = "000000") ELLER (CounterY (8 downto 3 ) = "111.011"));

padle <= to_stdlogic (((CounterX> = PaddlePosition "000.001.000") OG (CounterX <= PaddlePosition "001.111.000")) OG (CounterY (8 downto 4) = "11.011"));

BouncingObject <= grænsen eller padle;PROCESSEN

BEGIN

Vente (clk'EVENT og CLK = '1 ');

ResetCollision <= to_stdlogic ((CounterY = "111.110.100") OG (CounterX = "0000000000"));

END PROCESS;PROCESSEN

BEGIN

Vente (clk'EVENT og CLK = '1 ');

HVIS (ResetCollision = '1 ') THEN

CollisionX1 <= '0 ';

ELSE

IF (((BouncingObject OG to_stdlogic (CounterX = ballX)) OG to_stdlogic (CounterY = Bally "000.001.000")) = '1 ') THEN

CollisionX1 <= '1 ';

END IF;

END IF;

END PROCESS;PROCESSEN

BEGIN

Vente (clk'EVENT og CLK = '1 ');

HVIS (ResetCollision = '1 ') THEN

CollisionX2 <= '0 ';

ELSE

IF (((BouncingObject OG to_stdlogic (CounterX = ballX "0000010000")) OG to_stdlogic (CounterY = Bally "000.001.000")) = '1 ') THEN

CollisionX2 <= '1 ';

END IF;

END IF;

END PROCESS;PROCESSEN

BEGIN

Vente (clk'EVENT og CLK = '1 ');

HVIS (ResetCollision = '1 ') THEN

CollisionY1 <= '0 ';

ELSE

IF (((BouncingObject OG to_stdlogic (CounterX = ballX "0000001000")) OG to_stdlogic (CounterY = Bally)) = '1 ') THEN

CollisionY1 <= '1 ';

END IF;

END IF;

END PROCESS;PROCESSEN

BEGIN

Vente (clk'EVENT og CLK = '1 ');

HVIS (ResetCollision = '1 ') THEN

CollisionY2 <= '0 ';

ELSE

IF (((BouncingObject OG to_stdlogic (CounterX = ballX "0000001000")) OG to_stdlogic (CounterY = Bally "000.010.000")) = '1 ') THEN

CollisionY2 <= '1 ';

END IF;

END IF;

END PROCESS;

UpdateBallPosition <= ResetCollision;

temp_xhdl12 <= '1 'NÅR ball_dirX = '1' Else '1 ';

temp_xhdl13 <= '1 'NÅR ball_dirY = '1' Else '1 ';PROCESSEN

BEGIN

Vente (clk'EVENT og CLK = '1 ');

HVIS (UpdateBallPosition = '1 ') THEN

IF ((IKKE (CollisionX1 OG CollisionX2)) = '1 ') THEN

ballX <= ballX (temp_xhdl12);

HVIS (CollisionX2 = '1 ') THEN

ball_dirX <= '1 ';

ELSE

HVIS (CollisionX1 = '1 ') THEN

ball_dirX <= '0 ';

END IF;

END IF;

END IF;

IF ((IKKE (CollisionY1 OG CollisionY2)) = '1 ') THEN

Bally <= Bally (temp_xhdl13);

HVIS (CollisionY2 = '1 ') THEN

ball_dirY <= '1 ';

ELSE

HVIS (CollisionY1 = '1 ') THEN

ball_dirY <= '0 ';

END IF;

END IF;

END IF;

END IF;

END PROCESS;

R <= BouncingObject ELLER bold eller (CounterX (3) XOR CounterY (3));

G <= BouncingObject ELLER bold;

B <= BouncingObject ELLER bold;PROCESSEN

BEGIN

Vente (clk'EVENT og CLK = '1 ');

vga_R_xhdl3 <= R OG inDisplayArea;

vga_G_xhdl4 <= G OG inDisplayArea;

vga_B_xhdl5 <= B OG inDisplayArea;

END PROCESS;SLUT oversat;
 
thx mange kammerat ....... jeg cudnt ganske tak u nok ......

ligeglade, hvis jeg fejl u i fremtiden ......' gætter jeg får revner med det nu!!

 

Welcome to EDABoard.com

Sponsor

Back
Top