Обычные есть - но я тут разрывался перед выбором - поставить 32...64k SRAM, либо 8k, но при этом с часами, и добавить остальную память потом...
Просто сейчас переделывать макет поздно - чтобы вынуть оттуда SRAM придется разбирать полмакетки![]()
Обычные есть - но я тут разрывался перед выбором - поставить 32...64k SRAM, либо 8k, но при этом с часами, и добавить остальную память потом...
Просто сейчас переделывать макет поздно - чтобы вынуть оттуда SRAM придется разбирать полмакетки![]()
Pentagon 1024 SL 2.2 + NemoIDE + ZXMC
Amiga HD600 + 2Mb Chip + 4Mb Fast + Kick3.1 (hardware) + S-Video + CF 512Mb + LAN
Yamaha YIS503IIIR + 1Mb RAM and Mouse by Caro + Yamaha FD-051 + HxC Floppy Emul + Sunrise IDE
Macintosh LCII + 2Gb HDD + FPU + 10Mb RAM
Grape iMac G3/333 + 40Gb HDD + 256Mb RAM
Glacier GBA, GBA SP + EZFlash IV
Commodore 64 + 1541-II + XU1541
Atari 65XE + SD2SIO
Электроника МК-85
Как в VHDL описать Open Drain выход? Ниже два варианта кода который я пробовал, оба раза Квартус 7.2 ставит TRIstateAuto Open-Drain Pins = On
Код:... port( MOSI : out std_logic; ... signal MOSI_INT : std_logic; --Для варианта 2 ... --Вариант 1 MOSI <= '0' when SHIFT_REG(7) = '0' and SPI_OUT_EN_SYNC = '1' else 'Z'; --Вариант 2 MOSI_INT <= '0' when SHIFT_REG(7) = '0' and SPI_OUT_EN_SYNC = '1' else '1'; MOSI <= '0' when MOSI_INT = '0' else 'Z'; ...
http://quartushelp.altera.com/9.1/me...ile_opndrn.htmКод:LIBRARY altera; USE altera.altera_primitives_components.all;
Я как бы не в этой теме ссылку давал уже
http://www.altera.com/support/kdb/so...s=Open%20Drain
Есть еще 3 метод, через спецательные комментарии, но где и как оно работает в VHDL это надо искать
Cчастие
LIBRARY altera;
USE altera.altera_primitives_components.all;
...
ul: OPNDRN PORT MAP ( a_in => MOSI_INT, a_out => MOSI);
...
Может, и мне кто подскажеткак правильней на Verilog HDL описать двунаправленную шину так, чтобы на выход она работала тоже как open drain?
Это VHDL, но смысл думаю будет понятен...
Код:library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; LIBRARY altera; USE altera.altera_primitives_components.all; entity top is port( --BIDIR D : inout std_logic_vector(7 downto 0) := "ZZZZZZZZ"; --Data Bus --INPUTS nRD : in std_logic; --CPU signals nWR : in std_logic ); end; architecture rtl of top is signal DATA_REG: std_logic_vector(7 downto 0) := "00000000"; signal DB: std_logic_vector(7 downto 0); begin process(nWR) begin if nWR'event and nWR = '0' then DATA_REG <= D; end if; end process; DB <= DATA_REG when nRD = '0' else "11111111"; ul1: OPNDRN PORT MAP ( a_in => DB(0), a_out => D(0)); ul2: OPNDRN PORT MAP ( a_in => DB(1), a_out => D(1)); ul3: OPNDRN PORT MAP ( a_in => DB(2), a_out => D(2)); ul4: OPNDRN PORT MAP ( a_in => DB(3), a_out => D(3)); ul5: OPNDRN PORT MAP ( a_in => DB(4), a_out => D(4)); ul6: OPNDRN PORT MAP ( a_in => DB(5), a_out => D(5)); ul7: OPNDRN PORT MAP ( a_in => DB(6), a_out => D(6)); ul8: OPNDRN PORT MAP ( a_in => DB(7), a_out => D(7)); end rtl;
Последний раз редактировалось Keeper; 11.05.2010 в 23:19.
Тож в циклоне проверил, банальное
делает все правильноmodule TEST(
input wire DI,
output wire DQ,
inout wire DB,
input wire DIR
);
OPNDRN u1(DIR ? DI : 1'b1, DB);
assign DQ = DB;
endmodule
Последний раз редактировалось ZEK; 11.05.2010 в 23:26.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)