potřebné pomoci ..

S

sharada.144

Guest
Ahoj, můžete někdo prosím dejte mi VHDL kód pro převod 8 paralelních data bit do sériové data spolu se svými testbench, pokud ji máte?Prosím.Jeho naléhavé.

Díky,
Sharada
Naposledy upravil sharada.144 na 29 dubna 2008 11:33; edited 1 krát v celkové

 
Zde je kód, bude to fungovat pouze při vstupu en je změna spolu s posedge na hodiny.

//------------- RTL --------------------//

Modul P2S (CLK, RST, EN, DIN, dout);

vstup CLK, RST, en;
vstup [07:00] DIN;
Výstup dout;
reg dout;

drát pos_edge_detect;
reg vlajkou, aby;
reg [07:00] temp;

přidělit pos_edge_detect = (en & & ~ temp);

Vždy @ (posedge CLK nebo negedge RST)
if (! RST)
temp <= 8'b0;
else if (en)
temp <= din;
else if (enable)
temp <= (1'b0, temp [07:01]);
jiný
temp <= temp;

Vždy @ (posedge CLK nebo negedge RST)
if (! RST)
vlajka <= 1'b0;
jiný
vlajka <= en;

Vždy @ (posedge CLK nebo negedge RST)
if (! RST)
umožnit <= 1'b0;
else if (pos_edge_detect & & temp! = 8'b0)
umožnit <= 1'b1;
else if (temp == 8'b0)
umožnit <= 1'b0;

Vždy @ (posedge CLK nebo negedge RST)
if (! RST)
dout <= 1'b0;
else if (enable)
dout <= temp [0];

endmodule/ / --------------- Zkušební stolici --------------- / /"Include". / Rtl.v "
Modul tb_p2s ();

reg CLK, RST, en;
reg [07:00] DIN;
drát dout;

P2S P1 (. CLK (ČLK),
. RST (RST),
. Din (DIN),
. EN (en),
. Dout (dout)
);

počáteční
začít
$ Recordfile ("p2s.trn");
$ Recordvars ();
konec

počáteční
začít
CLK = 1'b1;
RST = 1'b0;
en = 1'b0;
# 25 RST = 1'b1;
# 25 CS = 1'b1;
din = 8'h45;
# 10 CS = 1'b0;
# 100 $ dokončení ();
konec

vždy
CLK = # 5 ~ CLK;

endmodule

 
Díky moc za pomoc.Ale já chci VHDL kód.Pocínovat u být příjemný pomoci mne.

 
Nemám žádné VHDL simulátor se mnou, takže jsem se snažil mé úrovni nejlepší přijít s VHDL RTL.dejte mi vědět, jestli to kompiluje rozumíš.

- RTL -

Knihovna IEEE;
použití ieee.std_logic_1164.all;subjektu RTL je
port (CLK, en, RST: v std_logic;
din: ve std_logic_vector (7 downto 0);
dout: z std_logic));Architektura RTL je
signál teplota: std_logic_vector (7 downto 0);
signál pos_edge_detect: std_logic;
signál vlajkou, aby: std_logic;

začít
procesu (CLK, RST)
začít
if (RST = '0 '), pak
temp <= (ostatní => '0 ');
elsif (CLK = '1 'a clk'event), pak
if (en = '1 '), pak
temp <= din;
elsif (enable = '1 '), pak
temp <= '0 '& temp (7 downto 1);
jiný
temp <= temp;
end if;
end if;
ukončení procesu;

procesu (CLK, RST)
začít
if (RST = '0 '), pak
vlajka <= '0 ';
elsif (CLK = '1 'a clk'event), pak
vlajka <= en;
end if;
ukončení procesu;

procesu (CLK, RST)
začít
if (RST = '0 '), pak
umožnit <= '0 ';
elsif (ČLK = '1 'a clk'event), pak
if (pos_edge_detect a temp = "00000000"), pak
umožnit <= '1 ';
elsif (temp = "00000000"), pak
umožnit <= '0 ';
end if;
end if;
ukončení procesu;

procesu (CLK, RST)
začít
if (RST = '0 '), pak
dout <= '0 ';
elsif (CLK = '1 'a clk'event), pak
if (enable = '1 '), pak
dout <= temp (0);
end if;
end if;
ukončení procesu;

konec architektury;Přidáno po 17 minutách:- Zkušební stolici
- Nejste si jisti, jestli to bude fungovat, nebo ne

Knihovna IEEE;
použití ieee.std_logic_1164.all;
použití ieee.std_logic_arith.all;

subjektu tb_rtl je
konec subjektu;

Architektura TB tb_rtl je
složka RTL
port (CLK, en, RST: v std_logic;
din: ve std_logic_vector (7 downto 0);
dout: z std_logic
);
konce složky;
začít
u_rtl: RTL port map (CLK => CLK,
en => cs,
RST => RST,
din => DIN,
dout => dout);

proces
začít
CLK <= '1 ';
Počkejte 5 ns;
CLK <= '0 ';
Počkejte 5 ns;
ukončení procesu;

proces
začít
RST <= '1 ';
počkat po dobu 30 ns;
RST <= 0 ';
en <= '1 ';
din <= "10101010";
čekat na 10 ns;
en <= '0 ';
ukončení procesu;
konec architektura tb;

 

Welcome to EDABoard.com

Sponsor

Back
Top