Jump to content

    

Digi

Свой
  • Content Count

    191
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Digi

  • Rank
    Частый гость
  • Birthday 07/10/1978

Контакты

  • Сайт
    Array
  • ICQ
    Array

Recent Profile Visitors

3025 profile views
  1. Посоветуйте трансформатор с приёмкой ВП. Напряжение 220 В - > 24 В, мощность около 400 Вт. Желательно тороидальный.
  2. Пока на inclock_en приходил сигнал с логики, то всё работало (до этого я не анализировал время прихода данных). Я подключил жёстко на inclock_en 1'b1 и после этого данные стали приходить не равномерно. Спасло прописать это: set_input_delay -clock {P1_CLKO} -min 2.7 [get_ports {P1_DO[*]}] set_input_delay -clock {P1_CLKO} -max 3.2 [get_ports {P1_DO[*]}] P1_CLKO и P1_DO это имена сигналов в самом верхнем уровне, соответствующие inclock и datain. Насколько корректно я это сделал, не могу понять. Получается что я указал задержку распостранения сигнала по внешним цепям, а по правильному нужно указывать допустимую задержку от пина до входа триггера. Но set_max(min)_delay у меня не сработали. Тем не менее вопрос для меня актуален, для общего развития (приходится переделывать старые проекты, а там часто встречались такие конструкции). PS: а в целом эта часть проекта заработала... но впереди много ещё чего предстоит )
  3. Сейчас столкнулся с тем, что не могу понять как прописать констрейны в проеке. Например первая сложность в том как прописать запираемое тактирование: (Сдвиговый регистр для приёма данных от 4х битного DDR для линк порта ADSP TS-201) wire inclock_gated = inclock & inclock_en; reg [11:0] datain_pos; reg [11:0] datain_neg; always @(posedge inclock_gated or negedge rst_n) if (~rst_n) datain_pos <= 12'b0; else datain_pos <= {datain, datain_pos[11:4]}; always @(negedge inclock_gated or negedge rst_n) if (~rst_n) datain_neg <= 12'b0; else datain_neg <= {datain, datain_neg[11:4]}; reg [4:0] pos_edges; reg [4:0] neg_edges; reg [15:0] pos_data; reg [15:0] neg_data; always @(posedge inclock_gated) if (freeze_pos) pos_data <= {datain, datain_pos}; always @(negedge inclock_gated) if (freeze_neg) neg_data <= {datain, datain_neg}; wire [31:0] shift_reg; assign shift_reg = {neg_data[15:12], pos_data[15:12], neg_data[11:8], pos_data[11:8], neg_data[7:4], pos_data[7:4], neg_data[3:0], pos_data[3:0]}; Ведь нужно учесть задержку inclock_gated относительно inclock. А потом уже относительно inclock_gated прописать допустимую задержку входных сигналов datain... Как бы вы порекомендовали ? Ещё выяснил, что от внешних пинов, до регистра datain_pos сигналы приходят с разной задержкой. Как их выровнять ?
  4. Я же писал, что этот блок работает с PCIe Gen2 x4, А у меня х1. С таким интерфейсом он не работает
  5. Оно примерно так и есть, это блок памяти подключен к контроллеру PCIe а с другой стороны подключен мой контроллер. Этот блок памяти является буфером обмена между компом и и моей железкой.
  6. Ага. Потом буду голову ломать, как к этому внешний DMA контроллер прикрутить и надыбать драйвер ))) Так как разрядность шины 64бит, а Avalon MM DMA работает только с шиной 128 бит. А так как 128 бит возможно только на Gen2 4х а у меня только 1х Gen1 то Avalon MM DMA не доступен. Поэтому только внешний контроллер....
  7. Не знаю, чем мне поможет Instance контроллера в QSys ведь к нему всё равно от памяти будет идти интерфейс Avalon. Мне то нужно вытащить(экспортировать) сигналы порта памяти. Чтобы получилась Instance в Qsys Двухпортовой памяти, к которой к одному порту подключена шина Avalon а другой порт экспортировался наружу в виде сигналов. К тому же у меня нет опыта в создании своего Instance для QSys. Временно решил проблему так, так как пока что только только чтение контроллером из памяти, я экспортировал Avalon второго порта и подключил соответствующие сигналы к контроллеру. Диаграмма работы шины вроде совпадает с диаграммой голой памяти.
  8. Так как раз и хотел получить прямые сигналы второго порта памяти вывести на контроллер. Так как контроллер уже отлажен с ними. Сейчас вытащил Avalon шину второго порта памяти, пытаюсь её прилепить к контроллеру.
  9. Получается что переходник или с Авалон Master на стандартный интерфейс памяти и память ставить вне Platform Designer или с Avalon Slave . На этой шине уже висят устройства с некоторым диапазоном адресов. Я хотел другой диапазон адресов этой же шины отдавать наружу в виде адрес/данные. Для дальнейшей работой с ними. Это будет доступ к банку регистров контроллера.
  10. С IO и памятью немного разобрался, заработало. Теперь задача стоит сопрячь 2х портовую память с Avalon-MM и самописным , внешним, контроллером. То есть я с одной стороны в Platform builder подключил 2х портовую память к Avalon а вот как получить обычные сигналы второго порта , не Avalon , чтобы прикрутить их к моему контроллеру ? И другой вопрос, что использовать для того чтобы вывести от Avalon MM Master наружу сигналы адрес, данные, чтение, запись , для того чтобы их использовать в своём контроллере ?
  11. Пока проблему решил путём аппаратной доработки железки. Кинул внешние проводники, высверлив старые.
  12. У меня как раз десятка, и там такого не нашел. И этого в логах тоже не нашёл... По идее этот параметр должен был быть применён. Ещё поковыряюсь, как чего наковыряю - сообщу. :)
  13. В каком описании это нашли ? Мне как раз и надо чтобы было NO_DC_GAIN, а Transciever Toolkit показывает значение по умолчанию 4.
  14. Немного накосячили с топологией шины PCIe. При помощи настройки параметров трансивера из Transciever Toolkit удалось добиться нормальной работы устройства, но как прописать теперь эти значения в сам трансивер, что бы после загрузки они были такими ? Попробовал а Assigment editor прописать set_instance_assignment -name XCVR_C10_RX_EQ_DC_GAIN_TRIM NO_DC_GAIN -to PCIE_RX , но изменений не произошло. Плис: Cyclone 10GX, Корка: pcie_a10_hip