Форумы Modlabs.net: ошибка реализации устройства - Форумы Modlabs.net

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

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

ошибка реализации устройства

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

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

Отправлено 17 июня 2012 - 16:18

Здравствуйте, представленное устройство:
реализует совместный доступ устройств ввода и вывода к ОЗУ. Разрядность адреса ОЗУ — 5 битов, разрядность данных — 7 битов. По нечётным тактам в ячейку ОЗУ со случайным адресом (сгенерированным генератором случайных чисел) записывается ASCII код символа из буфера компонен-та «Клавиатура», причём если буфер пуст (на выходе компонента — значение «0»), то запись не происходит. По чётным тактам происходит вывод содержимого ОЗУ на светодиодную матрицу размером 7x32 с помощью развёртки, то есть каждый чётный такт — следующая строка точек.
1. Значение ошибки регулярно подаётся на матрицу,о чём она сигнализирует строкой пикселей, подсвеченной красным. Такого не должно быть.
2. Сама схема работает неверно. Если мы не вводим никаких новых символов, изображение на матрице меняться не должно,поскольку содержимое ОЗУ не меняется.
..в чем заключается ошибка на практике и как это исключить? :(
Изображение
Прикрепленный файл  7_cursovik_6.zip (12,47К)
Количество загрузок:: 2
0

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

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

Отправлено 18 июня 2012 - 06:53

Почему на входах триггеров ничего не видно? Если они ни к чему не подключены - это Z - а его в триггер засунуть не получится. Или это какая-то разновидность счетчиков так нарисована? Левый - генератор сл.чис?
0

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

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

Отправлено 18 июня 2012 - 10:16

Да, левый - генератор случайных чисел, правый - счетчик..
0

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

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

Отправлено 18 июня 2012 - 14:25

Правильно ли я понял задание и работу элементов:

1. У нас есть 2 источника адреса. 1 - генератор случайных чисел, 2 - счетчик тактов. который зациклен на количество строк развертки матрицы (оно же - количество ячеек памяти)?
2. У нас есть 2 клока - четный и нечетный (схему деления клока на четный/нечетный я приводил в ваших старых топиках) - не вижу на схеме. (При этом четный и нечетный клоки - это не фронт и спад сигнала).
3. По каждому четному клоку нужно переключать адрес на входе ОЗУ с ист.1 и ист.2 - это не вижу тоже. Параллельно с этим нужно отображать 1 символ в виде строки на матрице (не пытаться сделать полную развертку в один такт).
4. По каждому нечетному - опять переключаем адрес с ист. 2 на ист. 1, ну и вводим с клавиатуры 1 символ.
5. Матрица все равно будет обновлятся при отсутствии ввода - так как полный цикл развертки происходит за 32 такта, а не за 1. Если нужно делать полное обновление матрицы за 1 такт - нужен второй клок.
6. Красная строка - у меня сложилось впечатление, что это просто активная строчка, выбранная демультиплексором, а не ошибка. Нет?

С адресом я пока не понял, как именно сейчас работает связка ОЗУ/Демуль/Экран - если на входе ОЗУ случайный адрес - на выходе данных должно быть корректное значение (из случайной ячейки) и это значение должно рисоваться на матрице...

Up. Разобрался. При выводе на матрицу надо еще включить сигнал sel, иначе он на дату Z выводит вместо значения.

Вечером буду дома - нарисую, если к тому моменту сами не разберетесь.
0

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

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

Отправлено 18 июня 2012 - 15:33

1. Да, именно так.
2. Должен быть по условию только один клок.
5. При отсутствии ввода матрица не должна обновляться.
6. Нет, это все-таки ошибка, обозначаемая программой.
Попробую пока поэксперементировать.
0

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

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

Отправлено 18 июня 2012 - 20:44

В общем, мое решение в аттаче.
Базовый генератор - один, синхронных клоков - три. Базовый клок, четный клок и нечетный клок.
После полного прохода матрица обновлятся не будет. Но как минимум в течение 64 тактов базового клока после последнего ввода возможно обновление тех строк, которые менялись. Если уж совсем нельзя - без второго (асинхронного к первому) генератора - никак. А при втором генераторе - нужны переходы между клоковыми доменами в районе матрицы. Как делать переход - кое-что сказано здесь.

Там довольно криво выглядит место чтения из клавиатуры. Было бы неплохо пропустить это через регистр, но тогда там придется пропускать и один из адресов, это довольно сильно усложнит схему и внесет задержку. Посмотрите повнимательней - если в какие-то моменты символ будет проглатываться - доработаю.

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

  • Прикрепленный файл  my_var.zip (1,74К)
    Количество загрузок:: 2

0

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

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

Отправлено 18 июня 2012 - 21:29

Посмотрела,одно только не совпадает с условием - четности/нечетности тактов..
к примеру, реализация осуществляется примерно так(вариант схемы старого топика, переделанный сегодня)..только боюсь преподавателю необходима именно новая переделанная версия, а не старая, то есть новая схема должна содержать - матрицу с форматом входа - "по строкам".

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

  • Прикрепленный файл  7-6.zip (1,64К)
    Количество загрузок:: 2

0

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

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

Отправлено 18 июня 2012 - 21:51

Еще раз поподробней - что там не совпадает? Нужно поменять клоки местами и прикрепить другую матрицу к моему варианту или что-то другое?
0

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

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

Отправлено 18 июня 2012 - 21:57

возможно ли в данной реализации допустить2 клока, исключив 3-ий?
0

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

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

Отправлено 18 июня 2012 - 22:12

Не совсем понимаю, с какой целью. Вы точно не имеете в виду фронт/спад сигнала?
У вас в любом случае будет выход генератора. Его, конечно, можно не подавать на тактирование ОЗУ - но тогда там совсем нехорошо получается - придется подавать на синхровход сигнал с логической функции (так как вход там единственный), т.е. по сути заново его создавать. И также по условию встречаются понятия четных тактов и нечетных - как ни считай - у меня 3 получается в итоге.
0

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

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

Отправлено 18 июня 2012 - 22:21

А если сравнить с версией, которую прислала, в этом варианте такую работу тактов реализовать не получится, потому как матрица здесь по строкам?
и к примеру, если допустить меньшее количество элементов?
0

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

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

Отправлено 18 июня 2012 - 22:26

А чего не хватает в вашем варианте? Там тоже те самые 3 клока.
0

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

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

Отправлено 18 июня 2012 - 22:46

заменила на матрицу по строкам:
и в результате получилась более правдоподобная схема, с добавлением триггера, спасибо за идею=)
вероятно, теперь нет ошибок, по крайней мере красным не заполняется и значения не меняются, когда не вводим ничего..
еще в первом прошлом варианте - сначала значения заносились в озу, и только потом передавались для формирования изображения на матрицу. Это было не совсем то, необходимо было сразу, без полного заполнения озу..
очень надеюсь, что в этот раз все понравится)
__
спасибо большое за помощь в курсовой, без вас бы я не справилась :*

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

  • Прикрепленный файл  7-6_new.zip (1,63К)
    Количество загрузок:: 1

0

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

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

Отправлено 18 июня 2012 - 22:58

Если взяли мой вариант и после переделки он вас устроил - то можете попробовать его упростить. Например, если буфер клавиатуры выдает при отсутствии данных значение, которое не лезет в ОЗУ - можете выкинуть sel. Инвертор в районе делителя тоже не нужен, т.к. там есть инвертирующий выход. Без повторителя вроде тоже работает сейчас.

Up. Посмотрел - у вас сейчас не совсем понятно одно место - адрес для ОЗУ подается только из генератора случайных чисел.
0

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

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

Отправлено 18 июня 2012 - 23:00

хорошо)
0

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

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

Отправлено 18 июня 2012 - 23:09

Я там mux не просто так вставил - у нас 2 независимых "процесса".
В первом мы выставляем случайный адрес - и пишем по этому случайному адресу значение из клавиатуры.
А во втором мы обходим все адреса начиная с 00, затем 01, 02 и.т.д. с инкрементом на единицу - каждый из этих адресов в свой такт должен оказаться на адресном входе ОЗУ. Сейчас я не вижу, чтоб он туда попадал в какой-либо момент времени.

Up. Точнее, не вижу момента выставления случайного адреса. А счетчики возле адреса и возле матрицы - по сути дублируются.
0

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

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

Отправлено 18 июня 2012 - 23:34

только по четным тактам не происходит вывод содержимого ОЗУ на светодиодную матрицу..
0

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


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

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




Яндекс.Метрика