ага, обсчитался :)
Вид для печати
Например, было так:
process(eoc,int_keyb,int_buf)
begin
if eoc='1' then
vector<="11111101";
elsif (int_keyb='1' and int_buf='0') then
vector<="11111011";
end if;
end process;
Это даст лишний варнинг, что vector - это latch. А это не очень хорошо... Можно получить неустойчивую работу из-за "иголок" и "гонок". Делаем так:
process(clock,eoc,int_keyb,int_buf)
begin
if (clock'event and clock='1') then
if eoc='1' then
vector<="11111101";
elsif (int_keyb='1' and int_buf='0') then
vector<="11111011";
end if;
end if;
end process;
Теперь компилятор доволен, а мы избавлены от глюков.
Защелка образуется, например, когда в процессе
есть условия, а присвоение значения производится
не во всех вариантах условия.
http://www.interfacebus.com/Design_VHDL_Pitfalls.html - на англ.
Образно говоря, мы заменяем 555ИР22 на 555ИР23 :)
---------- Post added at 12:06 ---------- Previous post was at 12:03 ----------
Не только...
Защелка записывает в себя данные всё время, пока активен сигнал выбора этой защелки. Если же сделать эту защелку синхронной, т.е. тактировать ее фронтом какого-либо сигнала, то запись будет происходить мгновенно, например как D-триггер, или регистр ИР23.
Делается делителем на 4 и элементом "Исключающее ИЛИ"
http://library.espec.ws/books/ttl/CHAPTER2/2-4-3.htm
Ewgeny7, в твоём файле orionkeyboard.v есть вот такие конструкции:
Эти два массива различные? Если да, то почему они названы одинаково или это в синтаксисе языка дозволено? Первый индекс означен номер столбца, второй - строки или наоборот?Цитата:
...
keymatrix[7] <= 8'h0;
...
9'h06c: keymatrix[0][0] <= press_release; //Home
...
Я почему спрашиваю. Для реализации клавиатуры в Специалисте, мне приходится перелопачивать весь текст программы, т.к. приходится описывать клавиатуру 12 на 6. В программе учитывается ли что русская и английская раскладка на одних и тех же клавишах не совпадают?
Да, keymatrix это массив 8х8. Синтаксис позволяет описывать как любой "бит" массива, так и строчку целиком. Что там строка а что столбец - я уже не помню, надо схему РК-клавиатуры смотреть.
Я приспосабливал этот блок для спектрума, исправлений было достаточно (5х8). Символы переписывал долго :) Выкладывал готовый блок где-то здесь в теме.
Нет. В Орионе нет четкого сигнала, указывающего на выбранную раскладку. Если бы был, то добавить удобную для себя раскладку - не проблема. Всего лишь сделать вторую таблицу символов :)
А так как есть - только ЯВЕРТЫ.
Всё ж, массив который одномерный как-то отличается от двухмерного или это один и тот же массив?
У меня есть этот файл - посмотрю.
Жаль. А вот в Специалисте есть клавиша РУС/LAT - можно же по нажатию её организовать триггер состояния клавиатуры?