Перейти к содержанию

Meteor77

Members
  • Постов

    107
  • Зарегистрирован

  • Посещение

Информация о Meteor77

  • День рождения 16.11.1977

Контакты

  • ICQ
    413249174

Информация

  • Пол
    Мужчина
  • Город
    Дубна, Московская область

Электроника

  • Стаж в электронике
    10-20 лет

Посетители профиля

5 591 просмотр профиля
  • Rine

Достижения Meteor77

Стажер

Стажер (3/14)

  • 10 постов на форуме
  • Неделя на форуме
  • Месяц на форуме
  • Год на форуме
  • 10 лет  на форуме

Последние значки

10

Репутация

  1. 1) нужен генератор тактов, которые будет считать счетчик (вряд ли там мегагерцы, если для шд (о котором я подумал) - не более 500 Гц. 2) делается детектор фронта для определения нажатия кнопки. Это буквально два последовательных триггера, по их состоянию 01 или 10 в счетчик записывается значение из переключателей (или константа) По другому состоянию 10 или 01 разрешается работа счетчика на вычитание. 3) собственно сам счетчик, который ждет когда в него запишут ненулевое значение и считает до нуля. После очистки - ждет запись.
  2. Вот сколько работал, вставка нескольких блоков в проект верхнего уровня среды и последующая компиляция проходят на ура (квартус), но при моделировании (моделсим) такой фокус не проходит - приходилось создавать проекты для тестирования вставляемых файлов, и только затем собирать весь проект. Особенно плохо получается с проектом в котором есть память (приходится пересобирать из раза в раз после замены данных в памяти).
  3. Что бы динамически управлять индикатором нужно сделать: 1) мультиплексор позволяющий выбрать 4 бита из 16разрядной шины; 2) полученный от мультиплексора код подать на преобразователь кода в символ (подается на входы ABCDEFGH); 3) код управления мультиплексором необходимо подать на дешифратор для включения одного отображающего элемента (поступает на транзисторы); 4) всем этим должен управлять генератор. На первом шаге рекомендую в линии управления транзисторами вывести 0, и пробовать включать сегменты ABCDEFGH. Для отображения цифры 1, нужно подать комбинацию 01100001. Для 0 - 00000011. Отображаемый символ будет на всех секциях. Далее думаю разберетесь. Когда разберетесь со всеми кодами - сделаете узел №2 управляемый от 4-х тумблеров - проверите. Затем (если есть еще 2 тумблера) сделаете дешифратор для включения нужной секции. Пощелкаете - убедитесь в работоспособности. Остается сделать мультиплексор с генератором. Частоту смены символа лучше делать выше 100 Гц - тогда не будут заметны переключения.
  4. Мне хватило "Проектирование систем на микросхемах программируемой логики" в авторстве Грушвицкого, Мурсаева и Угрюмова. БХВ-Петербург 2002г. В ней есть разделы посвященные и AHDL, и VHDL, и verilog. С серединке начну (gen_divd). В проекте описан счетчик, с числом разрядов задаваемых параметром divdWIDTH. После сброса счетчик обнуляется и на выходе ставится начальное значение. На каждом такте clkin, к счетчику прибавляется 1, после достижения или превышения наперед заданного значения (divdFACTOR) на выходе модуля происходит переключение состояния на обратное. Т.е. формируется частота в 2 раза ниже тактовой. Примерно такой же принцип заложен в модуль управления АЦП. Имеется счетчик, точнее машина состояний, с каждым тактом машина переводится в новое состояние. Всего состояний 31. Для каждого состояния есть инструкция что делать, например 1:begin ad_clk_out<=1'b1;end при состоянии 1, нужно установить вывод ad_clk_out в лог. 1. а на следующем такте 2:begin addata[7]<=ad_data_in;ad_clk_out<=1'b0;end Вывести в этот же вывод 0, а состояние входного сигнала ad_data_in записать в старший бит регистра addata. Ну и самое интересное, по достижению счетчиком состояния 30, производится проверка сигнала TxFinish и если сигнал равен 1, то счетчику присваивается состояние 31, а если сигнал равен 0 - то счетчику присваивается значение 30, что позволяет организовать ожидание события.
  5. Пока Вы не углубились в изучение AHDL, скажу - представленный синтез написан в verilog. Теперь очень бегло. В модуле tlc549 есть счетчик на 31 состояние. В начальном стотянии (0) формируется сигнал выбора микросхемы, затем со значения 1 до 16 формируется времянка для последовательного вывода результатов преобразования в сдвиговый регистр. На значении 17 закрывается работа с АЦП, далее следует технологическая пауза, формируется сигнал XmitPlus, и затем схема вводится в состояние ожидания появления внешнего сигнала TxFinish. В модуле gen_divd описан банальный счетчик для формирования производной частоты из основной тактовой. Реализацию модуля уарта не осилил (верилог не родной язык), но скорее всего нужен для банальной передачи одного байта и его надо вставлять в верхний уровень для организации периодического запуска АЦП, передачи результатов в уарт и далее в ПК или другое устройство.
  6. Можно пойти например так: 1) Сформировать внутренний системный таймер с частотой в несколько раз выше частоты сигнала. Допустим в 10 раз выше, и при тональном сигнале 15кГц это будет 150 кГц. 2) Далее на этой частоте захватывать состояние входов на которые поданы меандры А и В. Один из сигналов необходимо принять за опорный и относительно его импульса (детектируя фронты) считать число тактов системной частоты на которое получится сдвижка. 3) Зная длительность опорного импульса и число задержанных можно найти разность фаз. Существенным недостатком такого способа является угрубление оценки фазы с повышением частоты тонального сигнала. Для повышения точности можно начать собирать статистику и вычислять среднее значение на интервале длительность которого многократно превышает период тонального сигнала.
  7. Прошляпил этот узел. Судя по приведенному коду этот узел является счетчиком передаваемых байт. И пока на его выходе narr_sig_out сохраняется 1, передатчик работает. Если Вы любитель трудностей - то да, объединяйте. Просто в этом случае всю кухню придется варить в одном котле (файле). Могу посоветовать поступить чуть иначе. Наверняка с квартусом у Вас установился и ModelSim. Создайте в нем тестовые проекты к каждому узлу и промоделируйте их. На выходе получите временные диаграммы, которые дадут представление о работе узлов. А после - создайте проект для всей системы, используя наработанный опыт из предыдущих узлов.
  8. Не внимательный Вы. Оставим спор о лишнем или не лишнем. Есть тут и 232 и даже семисегментник (слева вверху, "кирпич" с обозначением ABCDEFGH и четырьмя транзисторами для управления разрядами)
  9. В примере есть как минимум 3 дополнительных узла: 1) gen_div - судя по названию это формирователь частоты, возможно с привязанным сбросом. 2) uart_t - передатчик 3) uart_r - приемник. Похоже тут вот как происходит дело. Тактируется проект частотой 48МГц. Далее gen_div формирует меандр с длительностью импульса и паузы по 156 тактов f=48MHz. На выходе получается частота порядка 153 кГц (сигнал clk_. Далее в блоках uart_t и uart_r из полученной частоты тактируется набор сдвиговых 16битных регистров, из которых "правильным" образом формируется единичный бит (для приемника с анализом трех бит из 16, для передатчика - простым счетом). Тогда получаемая скорость составляет примерно 9600 бит/с.
  10. Начну пожалуй с конца. Выбор языка дело настолько индивидуальное, что советовать бессмысленно. Наверное правы те, кто пропагандирует знание обоих VHDL и verilog. Тоже начинал на ahdl, а сейчас использую VHDL - он мне ближе и нравится "строгостью". Теперь по порядку. Я не знаю что Вы будете использовать, возможно на плате стоит настоящий преобразователь uart-RS232, а возможно что uart-usb. В принципе, со стороны плис, необходимо делать uart. Поэтому такие мелочи как уровень +/-12В - вычеркиваем. Оставляем самую суть - временные соотношения. Далее (поиском по форумам) можно найти массу реализаций uart в плис. Относительно программы пользователя - ее интерфейс (расположение "органов управления" и "индикаторов") можно прорисовать на бумаге. В примитивном исполнении - поиск и выбор устройств (если используется переходник usb-uart на FT232 и им подобных), окошко установки или выбора отправляемого параметра, окошко приема ответного параметра, кнопка отправки команды.
  11. Первое что надо сделать - разобраться с интерфейсом RS232. Понять как устроены и работают приемник и передатчик. Второе - проработать протокол. Его суть заключается в том, что Вам надо понять как будут представлены данные на стороне ПК и на стороне плис. Какие могут быть дополнительные направления для быстрого наращивания, если оно потребуется. Все это должно быть оформлено в виде документа, который всегда будет под рукой, его можно и нужно будет править, но основная его функция - организация Вас как разработчика. Далее нужно определиться с ПО на стороне ПК, что будете использовать? Простой терминал, или самописную программу на языке высокого уровня? Как в ПО будут вводиться данные для отправки в плис? Куда будут выводиться данные от плис? Ну и наконец, собственно синтез под плис - как реализовать приемник и передатчик. Как сделать модуль для индикатора. Если не секрет, почему AHDL? Этот язык исключительно Alter'ы, на нем конечно можно многое сделать, но он не универсален.
  12. Рад что у Вас все запустилось! Принимайте мои поздравления!
  13. MSELы не пробовали менять? Заметил, что загрузка занимает до нескольких секунд - возможно Вам потребуется проявить выдержку. Само программирование в режиме AS оканчивается или прекращается на каком-то шаге? UPD: Смотрел Вашу ошибку у Альтеры. В описании говорится либо о плохом тактовом сигнале (думаю не Ваш случай), либо о наличии двух заголовков (я понимаю как две строки в области выбора файла окна программирования и т.п.) Сделайте скрин окна перед загрузкой и при выводе ошибки
  14. Да ёкорный бабай Вы же R112 прицепили не на корпус, а на источник +3,3В и хотите что бы работало. Ну как же так...?!
  15. Буквально недавно натолкнулся на похождую беду. Программирование по JTAG останавливалось от 15 до 90%. Программирование в режиме AS проходило успешно, но при отключении программатора прошивка не стартовала. Обратил внимание на то, что если оставить программатор подключенным к разъему для программирования ПЗУ, то после подачи питания прошивка загружается. Далее отключил программатор, подал питание. Прошивка не загрузилась, начал касаться щупом осциллографа контактов разъема и в очередной раз прошивка загрузилась после прикосновения щупом к резистору подтяжки вывода nCE. Потыкал несколько раз - убедился что эффект носит устойчивый характер и в конце -концов припаял параллельно резистору конденсатор на 9 пФ. Теперь болезнь не проявляется.
×
×
  • Создать...