VHDL lub Verilog schemat

Jun 03, 2005 11 Replies

Poszukuje schematu strukturalnego uk³adu 74164 w jêzyku VHDL lub Verilog Z góry dziêki za pomoc



Do syntezy czy do symulacji?

Dz.

Do symulacji w programie Active HDL 6.2

U¿ytkownik "Marcin" snipped-for-privacy@poczta.onet.pl> napisa³ w wiadomo¶ci news:d7ov7v$q3n$ snipped-for-privacy@news.onet.pl...

Taki rejestr przesuwny to w 15 minut mozna napisac

Pozdr. Tomek

To poproszê napisaæ :( z góry dziêkuje bo mêczê siê i nie wychodzi :(

U¿ytkownik "Marcin" snipped-for-privacy@poczta.onet.pl> napisa³ w wiadomo¶ci news:d7p01a$s12$ snipped-for-privacy@news.onet.pl...

Moze wieczorem jak bede w domu bo w pracy nie mam za bardzo czasu :)

A ja potrzbuje ten uk³ad do wieczora tak abym jeszcze zrobi³ symulacje i opisy :(

Mia³em dzi¶ powtórzyæ pisanie w VHDL, tak na zbli¿aj±c± siê rozmowê o pracê - wiec napisa³em. Symulowa³em i dzi³a, choæ nie podoba mi siê sygna³ dane, bez niego nie chce kompilowaæ.

Goju

----------------------plik z rejestrem------------------------------

library IEEE; use IEEE.std_logic_1164.all;

entity rejestr is port( Q : OUT std_logic_vector(7 downto 0); A : IN std_logic; B : IN std_logic; CLOCK : IN std_logic; CLEAR : IN std_logic ); end rejestr;

architecture rejestr_a of rejestr is

signal wejscie : std_logic; signal dane : std_logic_vector(7 downto 0);

begin

zapis: process(CLEAR,CLOCK,wejscie) begin if CLEAR='0' then dane<="00000000"; elsif CLOCK'event and CLOCK='1'then dane<=dane(6 downto 0)& wejscie; end if; end process; wejscie<=A AND B; Q<=dane; end architecture;

----------------------plik z testbenchem------------------------------ library IEEE; use IEEE.std_logic_1164.all;

entity tb_rejestr is end tb_rejestr;

architecture tb_rejestr_a of tb_rejestr is

component rejestr is port( Q : OUT std_logic_vector(7 downto 0); A : IN std_logic; B : IN std_logic; CLOCK : IN std_logic; CLEAR : IN std_logic ); end component;

signal s_OUT : std_logic_vector(7 downto 0); signal s_CLOCK,s_CLEAR,s_A,S_B : std_logic;

constant period : time:=50ns; -- bo f=20Mhz

begin

metkowanie : rejestr port map( s_OUT, s_A, S_B, s_CLOCK, s_CLEAR );

-- proces zegara - chodzi caly czas clock: process begin s_CLOCK<='1'; wait for period/2; s_CLOCK<='0'; wait for period/2; end process;

scenariusz: process begin s_CLEAR<='0'; s_A<='1'; S_B<='0'; wait for 1/3*period; wait for 2*period; s_CLEAR<='1'; wait for period; S_B<='1'; wait for 2*period; S_B<='0'; wait for period; S_B<='1'; wait for 2*period; S_B<='0'; wait for period; S_B<='1'; wait for 4*period; S_B<='0'; wait for 3*period; S_B<='1';

wait for 10*period; assert false severity failure;

end process scenariusz;

end tb_rejestr_a ;

---------------------------------koniec

Dziêki ale moim zdaniem jest to model funkcjonalny a wiec oparty na zale¿no¶ciach stanów wyj¶æ uk³adu od stanu wej¶æ a ja poszukuje strukturalnego opartego o logiczn± strukturê.

tak w ogole to sadze, ze zdrowiej jest zadania domowe odrabiac samodzielnie, ale skoro na wiedczor ...

module reg74164 (clk, clr, A, B, Qa, Qb, Qc,Qd, Qe, Qf, Qg, Qh);

input clk, clr, A, B; output Qa, Qb, Qc,Qd, Qe, Qf, Qg, Qh;

reg [7:0] int_reg;

always @(posedge clk or negedge clr) begin if (!clr) int_reg <= 0; else begin int_reg <= {int_reg[6:0],(A&&B)}; end end

assign Qa = int_reg[0]; assign Qb = int_reg[1]; assign Qc = int_reg[2]; assign Qd = int_reg[3]; assign Qe = int_reg[4]; assign Qf = int_reg[5]; assign Qg = int_reg[6]; assign Qh = int_reg[7];

endmodule

JA

Ciekawe jak to "kompilator" zrozumie .. domysli sie ze clr ma byc asynchroniczny ? :-)

J.

"J.F." :

a czemu ma sie domyslac ? to jest standard w verilogu;

no i skompilowalem sobie ten kawalek, domyslil sie :)

JA

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required