Форумы Modlabs.net: Устр-во, принимающ символы с клав-ы и вывод-щее на терминал по алгоритму - Форумы Modlabs.net

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Устр-во, принимающ символы с клав-ы и вывод-щее на терминал по алгоритму алгоритм обработки: не выводить никаких символов кроме букв и цифр

#1 Пользователь офлайн   Ksenya23 

  • Junior
  • Pip
  • Группа: Пользователи
  • Сообщений: 26
  • Регистрация: 19 Апрель 12

Отправлено 08 Май 2012 - 19:55

В поставленной задаче, выполняемой в программе Logisim, для определения принадлежности введённого символа 7-битного набора ASCII к определённой группе (прописные
и строчные буквы и цифры) использую несколько Компараторов. Остается только вопрос неотображения на терминале других символов, которые в моем случае отображаются знаками '?'. Наверно, в этом случае нужно задействовать тактовые входы клавиатуры и терминала, определенным образом срабатывающие только на необходимые символы, в другом случае - без срабатывания. Нет уверенности. Подскажите, как мне осуществить это действие? :mellow:
Представляю материал ниже

Прикрепленные файлы


0

#2 Пользователь офлайн   dE fENDER 

  • Member
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 271
  • Регистрация: 18 Декабрь 08

Отправлено 09 Май 2012 - 06:54

Решение определяется логикой работы терминала. Схема на рисунке в архиве совершенно правильная, если бы терминал не печатал символа, когда на его входе 0.
Так как он все равно печатает при этом нечто, то, скорее всего, логика у него такая, что по каждому сигналу клока он выводит 1 символ со своего входа, не делая никаких проверок.
Ну и решением будет просто выдавать на него сигнал клока(clkou) только когда символ в допустимых диапазонах, в противном случае гасить. Как-то так, к примеру:

module KeyFilter(inp, clk, ou, clkou);
input wire [7:0] inp;
input wire clk;
output wire [7:0] ou;
output wire clkou;

reg clktra = 1'h0;

always @*
begin
  if((inp > 8'h2f && inp < 8'h3a)
   || (inp > 8'h40 && inp < 8'h5b)
   || (inp > 8'h60 && inp < 8'h7b))
    clktra = 1'h1;
  else
    clktra = 1'h0;
end

assign clkou = clk && clktra;
assign ou = clktra ? inp : 8'h0;

endmodule


Изображение

Шину ou я оставил только для наглядности, ее можно убрать для такой логики. Если у терминала логика не совпадает с моей догадкой - напишите какая она на самом деле.

Синтезированная схема:
Изображение
0

#3 Пользователь офлайн   Ksenya23 

  • Junior
  • Pip
  • Группа: Пользователи
  • Сообщений: 26
  • Регистрация: 19 Апрель 12

Отправлено 09 Май 2012 - 14:53

Спасибо вам большое, и с праздником Победы! :)
0

#4 Пользователь офлайн   dE fENDER 

  • Member
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 271
  • Регистрация: 18 Декабрь 08

Отправлено 09 Май 2012 - 17:31

Рад был помочь. Вас тоже с праздником.
0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 members, 1 guests, 0 anonymous users