Poszukuje schematu strukturalnego uk³adu 74164 w jêzyku VHDL lub Verilog Z góry dziêki za pomoc
VHDL lub Verilog schemat
Jun 03, 2005
11 Replies
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