Jump to content

    

Jul'etta

Участник
  • Content Count

    14
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Jul'etta

  • Birthday 04/08/1990

Контакты

  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

446 profile views
  1. глянула, спасибо. Ваш код гораздо короче, чем код от AD :)
  2. Наткнулась на годные уроки xilinx video series. https://forums.xilinx.com/t5/Video-and-Audio/Xilinx-Video-Series/td-p/849583 В 16 уроке идет речь о блоке VTC (Video Timing Controller). https://forums.xilinx.com/t5/Video-and-Audio/Video-Beginner-Series-16-Understanding-Video-Timing-with-the-VTC/td-p/899769 Подскажите, возможно ли подключить его в мой проект? Там уже автоматом прописаны все нужные тайминги для режимов. Что значит, если код на верилоге подсвечивается голубым? Картинку прикрепила
  3. Спасибо! Эх, бьюсь третью неделю. Пока никак. А казалось, что все сложилось.
  4. Вот за ссылки отдельная благодарность! особенно за вторую - все шаги последовательно разобраны. А все настройки АDV у меня прописаны для регистров шины IIC в SDK, т.е. уже на софтверном уровне. Там и для ADV и для мультиплексора PCA9548. А может, Вы знаете, зачем инвертируют частоту пикселей? Что в описании к ADV (документ AN1270), что во второй Вашей ссылке: assign pixel_clk_N = ~pixel_clk; // инвертированный PixelClock
  5. Таблица из документации к монитору :) Монитор, правда, старенький, но рабочий, проверяла, подключив к компу. 1920х1200 - это оптимальный для него режим, но не единственный, который он поддерживает, по идее. Документ прикрепила. dell-2408wfp_user's guide_en-us.pdf
  6. я первым делом это проверила. из параметров такого "низкого" уровня как front и back porch, в документации на моник прописаны только sync polarity (это я прописала в соответствии с разрешением), pixel clock ну и horizontal/vertical freq. Первый параметр (sync polarity) прописывается в регистрах ADV по IIC, остальные выбираются в соответствии с режимом в коде верилог в описании AN-1270. Пока глухо, монитор не откликается.
  7. Приветствую. Задача: вывести на монитор тестовый шаблон по HDMI на Artix AC701. Исходные данные: работаю в Vivado 2017.1, имеется монитор Dell 2408WFP с поддержкой HDMI, и, собственно, сама плис Artix. Изображение для начала можно любого формата, главное, чтоб заработало. Я взяла режим 1920х1080р 60Гц, 24-Bit RGB (4:4:4) с раздельной синхронизацией. Проблема: Первая и самая главная - изображение отсутствует. Однако сигнал, судя по анализатору ILA в виваде, идет. У меня в наличии еще имеется маленький 7 дюймовый монитор hdmi lcd 1024x600 для raspberry pi (режим, разумеется, поменяла), на нем отображается не соответствующая шаблону картинка да еще и скачущая. Возможно, проблема с синхронизацией? Подробно о моем проекте. Создала в вивадо стандартный проект с процессором Microblaze (картинку прикрепила). Из документа ac701-schematic узнаю, что на борту артикс есть некая микросхема ADV7511 - это кодек HDMI, обеспечивает интерфейс между плис и портом hdmi, откликается по адресу 0х39. Дальнейшее изучение назначений ножек привело меня к еще одной микросхеме - PCA9548 - это IIC мультиплексор. Т.е. чтобы получить доступ к ADV, нужно пройти через коммутатор IIC по адресу 0х74. Нам нужно использовать 5 канал этого коммутатора для доступа к ADV. Из официального документа AN-1270 фирмы Analog Devices на микросхему ADV я нашла схему, как "собрать" все это безобразие плюс исходные коды на верилог для создания собственного IP ядра в виваде. Итак, картинка сложилась: добавляем в проект собственное ядро ADV7511 c предоставленными кодами (на схеме выделено красным), добавляем ядро AXI-IIC (выделено зеленым), поскольку для вывода в формате HDMI микросхема ADV должна быть запрограммирована на запись в соответствующие регистры IIC. Еще добавила блок Clock Wizard для генерации т.н. pixel frequency (для режима 1080p - 148.5 МГц) - на картинке выделен голубым. Ну и разумеется, прога в SDK для "оживления" всей этой аппаратной части. Сразу замечу, что скрипт для шины IIC из документа AN1270 вызвал у меня некоторые подозрения, ибо там дублируются одни и те же регистры с разными значениями. Поэтому в SDK я прописала значения регистров, взятые из ADV7511 Programming guide. Помогите, пожалуйста. Я много копалась на форуме Xilinx, но пока решение не нашла. Уповаю на наше сообщество. Если нужны еще подробности, документы с которыми работаю, все предоставлю. AN-1270.pdf
  8. Пишите так: module sm_registers ( input wire clk, input wire rst, output wire stts_overflow_fifo_o, output wire stts_op_code_o, output wire stts_status_o, output wire stts_add_inf_o ); Как уже писали выше надо stts_overflow_fifo_o привести к виду wire [5:0]stts_overflow_fifo и определить RegStatus_r да, видела такой стиль (когда читала книгу В.В. Соловьева по основам проектирования на верилог). Так лаконичней, согласна, но мне милей все отдельно обозначать. Спасибо, не додумалась :) буду иметь ввиду.
  9. Ага, а уже в заголовке объявляете через 'define ? просто я так сделала с самими названиями регистров: 'define reg_control 14'h000 'define reg_status 14'h004 .... а оказывается, можно в заголовке и поля так задавать, здорово, только я пока не уверена, за что какие поля у меня будут отвечать.
  10. Ааа, вот кажется теперь поняла. Посмотрите, пожалуйста, верно ли // first module `include "Corr_Header.v" module sm_registers (clk, rst, stts_overflow_fifo_o, stts_op_code_o, stts_status_o, stts_add_inf_o ); input clk, rst; output stts_overflow_fifo_o; output stts_op_code_o; output stts_status_o; output stts_add_inf_o; assign stts_overflow_fifo = Reg_Status_r[31:25]; assign stts_op_code = Reg_Status_r[24:17]; assign stts_status = Reg_Status_r[16:9]; assign stts_add_inf = Reg_Status_r[8:0]; // second module `include "Corr_Header.v" module SM_Read (clk, rst, stts_overflow_fifo_i, stts_op_code_i, stts_status_i, stts_add_inf_i ); input clk, rst; input stts_overflow_fifo_i; input stts_op_code_i; input stts_status_i; input stts_add_inf_i; с ума сойти. Не использую пока ни SV, ни интерфейсов - не доросла. А кстати, обязательно ли имена полей должны совпадать с именами портов?
  11. у меня просто Verilog. Вот как я объявила поля регистров в первом модуле (на примере регистра status): // Reg Status assign stts_overflow_fifo = Reg_Status_r[31:25]; assign stts_op_code = Reg_Status_r[24:17]; assign stts_status = Reg_Status_r[16:9]; assign stts_add_inf = Reg_Status_r[8:0]; Я не поняла Ваше объяснение про передачу в другой модуль. Синтаксис как ".port_name(signal)" ?
  12. Уважаемые плисоводы! Не могу найти информацию и/или доступные примеры, помогите, пожалуйста со следующей задачей. Имеется модуль, в котором объявлены 32-разрядные регистры некоторого устройства, например, 2 регистра: reg_control и reg_status. Кроме модуля, в котором эти регистры объявлены, имеется второй модуль, в котором они используются. И вот чего я не могу понять: как объявить конкретные поля под конкретные значения в одном модуле и потом передать эти поля как часть регистра в другой модуль?