ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
Speccy-2007 128/AY/TR-DOS
Сайт с документацией к "Scorpion ZS 256"
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Виктор, а если нажаты две кнопки одновременно?
А если расчет делается только на одну нажатую кнопу, то нафига столько антидребезгов?
ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
Speccy-2007 128/AY/TR-DOS
Сайт с документацией к "Scorpion ZS 256"
Если у тебя существует необходимость обрабатывать неодиночные нажатия, то смысл в шифраторе теряется, он не может хранить код сразу нескольких кнопок.
Поэтому, нужно просто определиться, будут одиночные нажатия, и тогда ставь шифратор, и одиночный антидребезг. Или убирай шифратор и ставь кучу антидребезга.
ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
Speccy-2007 128/AY/TR-DOS
Сайт с документацией к "Scorpion ZS 256"
Вы наверное говорите о приоритетном шифраторе:
http://gorgeous-karnaugh.com/ru/uche...shifrator.html
Скорее о шифраторе К1533ИВ1(74148)
Код:library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity sn74ls148 is port(i:in std_logic_vector(7 downto 0); s:in std_logic; ys,yex:out std_logic; y:out std_logic_vector(2 downto 0)); end sn74ls148; architecture behav of sn74ls148 is begin ys<=NOT((NOT(s)) and ( i(0)) and ( i(1))and ( i(2))and ( i(3))and ( i(4))and ( i(5))and ( i(6))and ( i(7))); yex<=NOT((NOT(s)) and ((NOT i(0)) or (NOT i(1)) or (NOT i(2)) or (NOT i(3)) or (NOT i(4)) or (NOT i(5)) or (NOT i(6)) or (NOT i(7)))); process(i,s) begin if(s='0')then if(i(0)='0')then y<="000"; elsif (i(1)='0')then y<="001"; elsif (i(2)='0')then y<="010"; elsif (i(3)='0')then y<="011"; elsif (i(4)='0')then y<="100"; elsif (i(5)='0')then y<="101"; elsif (i(6)='0')then y<="110"; elsif (i(7)='0')then y<="111"; else y<="XXX"; end if; end if; end process; end behav;Код:entity HW3Q1_148_Decoder is Port ( EI : in STD_LOGIC; Input : in STD_LOGIC_VECTOR (7 downto 0); A : out STD_LOGIC_VECTOR (2 downto 0); GS : out STD_LOGIC; EO : out STD_LOGIC); end HW3Q1_148_Decoder; architecture Behavioral of HW3Q1_148_Decoder is begin A <= "111" when EI='1' else "111" when EI&Input="011111111" else "000" when EI&Input="011111110" else "001" when EI&Input="011111101" else "010" when EI&Input="011111011" else "011" when EI&Input="011110111" else "100" when EI&Input="011101111" else "101" when EI&Input="011011111" else "110" when EI&Input="010111111" else "111"; EO <= '0' when EI='0' and Input="11111111" else '1'; GS <= '1' when EI='1' or Input="11111111" else '0'; end Behavioral;
Последний раз редактировалось MVV; 17.10.2014 в 13:18.
Viktor2312, вы я так понял делаете связку типа:
кнопка(9..0) -> блок антидребезга(9..0) -> приоритетный шифратор(10 to 4) ИВ1 -> синхронный регистр хранения (4 bit) ИР16 -> дешифратор (4 to 10) ИД1 -> блок реле(9..10) с индикацией
Уже и не спрашиваю наф вам для этого FPGA а не CPLD и МК![]()
Тогда Евгений прав - необходимости в 10 модулях антидребезга нет совсем, достаточно одного.
Нет - создаём сигнал который ORится со всеми кнопками, к нему применяем антидребезг, а потом выход антидребезга ORим с каждой кнопкой отдельно.
---------- Post added at 13:56 ---------- Previous post was at 13:24 ----------
Хотя нет - немножко неправильно - нужно подумать )
---------- Post added at 14:10 ---------- Previous post was at 13:56 ----------
примерно так:
1. создаём сигнал any_key который регистрирует факт нажатия любой кнопки - т.е. функция OR ко всем входам.
2. когда any_key = '1' запускаем счётчик (до 256 например)
3. вход каждой кнопки подключен к S-входу RS тригерра (у каждой кнопки свой триггер)
4. все R входы триггеров соединены с инвертированным выходом счётчика.
выигрыш в том что счётчик один а не десять, что значительно уменьшит занимаемые ресурсы.
Вроде должно работать )
Последний раз редактировалось shurik-ua; 17.10.2014 в 15:12.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)