Jump to content

    

FLTI

Свой
  • Content Count

    399
  • Joined

  • Last visited

Everything posted by FLTI


  1. Да, всё получилось после того, как убрал выходной регистр ( это в режиме OldData ): Ещё раз благодарю SM, des00 и всех кто помог советами! :beer: Upd: На Cyclonre IV GX Визард не предлагает Write Throught, но OldData меня устроит.
  2. Недоглядел, на входе и выходе есть регистры и оба заданы были. Причём входной отключить нельзя. А выходной сейчас отключил , сейчас перекомпиилирую и посмотрю результат.
  3. Я не запутался, я задаю минимальные требования из того, что требует от меня Визард при определении параметров RAM: 2-PORT ( меньше, чем Old Data не поставишь, а другую конвееризацию я не задаю ) и получаю такой вот эффект сдвига, который мне не нравится и которого не было в случае с памятью из шаблона ( True Dual Port RAM with dual clocks ), но которую нельзя применять , т.к возможен конфликт при записи и чтении по одному и тому же адресу из разных портов. А для RAM: 2-PORT такого конфликта не будет, но есть сдвиг. Можно ли от него избавиться? Адреса, данные, стробы для обоих случаев ( память из шаблона True Dual Port RAM with dual clocks и RAM: 2-PORT ) одинаковые, но результат разный. Поэтому вейформы смотреть нет смысла.
  4. Не понял Вас, что значит выводы неверные? Вейформы не применяю. В случае с памятью из шаблона ( True Dual Port RAM with dual clocks ) такого эффекта ( необходимость сдвигаться на одну ячейку ) не было. Если для RAM: 2-PORT в Визарде задать, что при одновременном обращении по одинаковому адресу чтобы считывалось новое значение ( New Data ), то сдвигаться придётся уже на 2 ячейки.
  5. Хорошо, всё понятно, всех благодарю за разъяснения. Я ожидал, что Квартус в явном виде укажет на то, что такую память нельзя собрать на регистрах, а вместо этого он выдал странный набор ошибок из которого не было понятно - в чём же дело ... Тогда взял память из Мегавизарда ( RAM: 2-PORT ) , задал всё как мне надо, установил, что при одновременном обращении по одинаковому адресу чтобы считывалось старое значение ( Old Data ). Сделал тест по записи и чтению пока с одного только порта. И вижу, что чтобы получить правильное значение надо читать не из той ячейки, куда я записал, а из следующей. В случае с памятью из шаблона ( True Dual Port RAM with dual clocks ) такого эффекта не было. Но видимо это неизбежно, это как бы плата за возможность одновременного обращения по одинаковому адреса из разных портов на разных клоках. Вопрос. Если применять память RAM: 2-PORT , то есть ли какой-нибудь приём/ухищрение, чтобы правильное значение читать всё-таки из той же ячейки, куда была сделана запись, а не со сдвигом на единицу?
  6. Я действовал согласно вот этому хелпу от Альтеры : http://quartushelp.altera.com/13.1/master...._dual_clock.htm В нём в последнем абзаце сказано, что можно принудительно заставить Квартус сделать память в виде регистров: If you are concerned about a potential mismatch, you can prevent Analysis & Synthesis from converting the registers into an altsyncram megafunction by turning off the Auto RAM Replacement logic option for the entity or instance that contains the dual-clock RAM. Я так и сделал ( set_global_assignment -name AUTO_RAM_RECOGNITION OFF -entity true_dual_port_ram_dual_clock ), но это вызывает ошибки...
  7. Здравствуйте! Потребовалось сделать небольшую 32 х 8 бит ( 32 байта ) 2-х портовую память, причём возможна ситуация, когда запись и чтение по ячейкам по одному и тому же адресу будет происходить одновременно. По шаблону в Квартусе создал создал True Dual Port RAM with dual clocks, т.к запись и чтение будут из разных клоковых доменов. // Quartus II Verilog Template // True Dual Port RAM with dual clocks module true_dual_port_ram_dual_clock #(parameter DATA_WIDTH=8, parameter ADDR_WIDTH=5) ( input [(DATA_WIDTH-1):0] data_a, data_b, input [(ADDR_WIDTH-1):0] addr_a, addr_b, input we_a, we_b, clk_a, clk_b, output reg [(DATA_WIDTH-1):0] q_a, q_b ); // Declare the RAM variable reg [DATA_WIDTH-1:0] ram[2**ADDR_WIDTH-1:0]; always @ (posedge clk_a) begin // Port A if (we_a) begin ram[addr_a] <= data_a; q_a <= data_a; end else begin q_a <= ram[addr_a]; end end always @ (posedge clk_b) begin // Port B if (we_b) begin ram[addr_b] <= data_b; q_b <= data_b; end else begin q_b <= ram[addr_b]; end end endmodule Правильно ли я понимаю, что чтобы такая память правильно работала ( когда запись и чтение по ячейкам по одному и тому же адресу будет происходить одновременно ) надо, чтобы она была организована не как память, а как набор регистров? Если верно, что чтобы задать в Квартусе надо в *.qsf файл добавить строчку set_global_assignment -name AUTO_RAM_RECOGNITION OFF -entity true_dual_port_ram_dual_clock , где true_dual_port_ram_dual_cloc - это название entity этой самой памяти? Если это тоже верно, то данный порядок действий вызывает странные ошибки: Error (10028): Can't resolve multiple constant drivers for net "ram[31][7]" at TrueDualPortDualClockRAM.v(30) Error (10029): Constant driver at TrueDualPortDualClockRAM.v(16) Error (10028): Can't resolve multiple constant drivers for net "ram[31][6]" at TrueDualPortDualClockRAM.v(30) Error (10028): Can't resolve multiple constant drivers for net "ram[31][5]" at TrueDualPortDualClockRAM.v(30) Error (10028): Can't resolve multiple constant drivers for net "ram[31][4]" at TrueDualPortDualClockRAM.v(30) Error (10028): Can't resolve multiple constant drivers for net "ram[31][3]" at TrueDualPortDualClockRAM.v(30) Error (10028): Can't resolve multiple constant drivers for net "ram[31][2]" at TrueDualPortDualClockRAM.v(30) Error (10028): Can't resolve multiple constant drivers for net "ram[31][1]" at TrueDualPortDualClockRAM.v(30) Error (10028): Can't resolve multiple constant drivers for net "ram[31][0]" at TrueDualPortDualClockRAM.v(30) Error (10028): Can't resolve multiple constant drivers for net "ram[30][7]" at TrueDualPortDualClockRAM.v(30) Error (10028): Can't resolve multiple constant drivers for net "ram[30][6]" at TrueDualPortDualClockRAM.v(30) Error (10028): Can't resolve multiple constant drivers for net "ram[30][5]" at TrueDualPortDualClockRAM.v(30) Error (10028): Can't resolve multiple constant drivers for net "ram[30][4]" at TrueDualPortDualClockRAM.v(30) Error (10028): Can't resolve multiple constant drivers for net "ram[30][3]" at TrueDualPortDualClockRAM.v(30) Error (10028): Can't resolve multiple constant drivers for net "ram[30][2]" at TrueDualPortDualClockRAM.v(30) Error (10028): Can't resolve multiple constant drivers for net "ram[30][1]" at TrueDualPortDualClockRAM.v(30) Error (10028): Can't resolve multiple constant drivers for net "ram[30][0]" at TrueDualPortDualClockRAM.v(30) Error (10028): Can't resolve multiple constant drivers for net "ram[29][7]" at TrueDualPortDualClockRAM.v(30) Error (10028): Can't resolve multiple constant drivers for net "ram[29][6]" at TrueDualPortDualClockRAM.v(30) Error (12152): Can't elaborate user hierarchy "true_dual_port_ram_dual_clock:inst" Error: Result: ERROR: Error(s) found while running an executable. See report file(s) for error message(s). Message log indicates which executable was run last. Error: Failed to discover source files from compiler. Check Analysis & Elaboration report. Или всё-таки нельзя такую память задать в виде регистров?
  8. Оказывается проблема была в некачественном напряжении питания 1,2V ядра ПЛИС Cyclone IV GX на плате, что вызывало такой странный эффект - на современных матерях плата опознавалась как PCIe x 1 вместо PCIe x 4.
  9. Есть ли какие-нибудь нюансы при установке нескольких Квартусов разных версий на одном ПК? И можно ли ставить, например, Q13.1 Web и Q13.1 Subscription на одном ПК?
  10. Оказывается в Q13.1 и Q14.0 Transceiver Toolkit работает только для Arria V GT, Arria V GZ, Cyclone V, Cyclone V SoC, Stratix IV GT, Stratix IV GX, Stratix V, а поскольку у меня в Q активировано только семейство Cyclone IV GX, то у меня Transceiver Toolkit вообще и не видим. Поскольку в АльтераВики сказано, что для построения Глаза нужен как минимум Transceiver Toolkit в Q13.1, то значит мне yf Cyclone IV GX так глаз посмотреть не удастся :crying:
  11. Странно, у меня тот же билд Quartus II 32-Bit Version 13.1.0 Build 162 10/23/2013 SJ Web Edition, но на 32-битной Вин7 и при выборе "Tools/System Console" открывается System Console, в которой в закладке Tools нет Transceiver Toolkit: Тоже самое на Q14 Web Edition.
  12. В этой статье есть ценная фраза: There are usually three major link training failures. One is a complete failure to establish a link of any width; indicated by the core output trn_lnk_up_n not asserting. The second is when the link trains to a lower width than intended, such as an x8 link training as x4. Third, is a link that is constantly entering into the RECOVERY state. Link training problems are normally due to board signal integrity problems or improper GTP/GTX usage. На AlteraWiki есть похожий документ Use Transceiver Toolkit to Measure PCI-Express Link Signal Integrity ( http://www.alterawiki.com/wiki/Use_Transce...Link%20Training ). Там говорится, что с помощью Altera Transceiver Toolkit можно как раз посмотреть "глаз". Но ни в Q13.1, ни в Q14.0 Web Edition в "Tools/System Console/Transceiver Toolkit" нет закладки "Transceiver Toolkit", которую предлагается выбрать в этой статье. Или Transceiver Toolkit доступен только в полной ( Subscription ) версии?
  13. Если Вы не возражаете, то продолжим в тематическом разделе по PCIe. http://electronix.ru/forum/index.php?showt...p;#entry1279436
  14. А куда там MegaWizard пропал или прячется где?
  15. Нет, глаз пока нечем посмотреть, могу судить об устойчивости работы платы пока только по внешним признакам. Как я уже ранее писал, на чипсете P55 плата опознаётся как PCIe x 4 и работает устойчиво с потоком 300 Мбайт/с ( больше пока не надо ) , а на чипсете B75 и Z97 плата опознаётся как PCIe x 1 и работает устойчиво с потоком только 150 Мбайт/с.
  16. То есть Вы считаете, что причину надо искать не в своей плате, а в материнской плате? ASPM был по умолчанию отключен в БИОСе, а установка GEN1 вместо "Auto" ничего не дала... Посмотрел внимательно через PCI Scope регистры PCI Express Capabilities. Заметил, что в матери на чипсете Z97 ( где плата ошибочно опознаётся как х1 ) в Device Status Register значение Corretable Error Detected = Yes, а в матери на чипсете P55 ( где плата правильно опознаётся как х4 ) в Device Status Register значение Corretable Error Detected = No, т.е ошибки не было. Значит всё-таки проблема со стороны своей платы? Это для меня сейчас самое важное понять - проблема со стороны своей платы или в конфликте разных GEN на своей плате и на материнской плате?
  17. Состояние Lane Reversal где-то отображается в PCI Express Capabilities ( например по данным PCI Scope )?
  18. Проверил свою тестовую плату с ядром PCIe x 4 GEN1 в слоте PCIe x 16 ( в режиме PCIe x 4 ) на матери с чипсетом Z97 и проверил её состояние через PCI Scope. Оказывается на матери с чипсетом Z97 параметр Negotiated Link Width оказался только лишь х1 и скорость потока также низкой, как и на матери с чипсетом B75. А на матери с чипсетом P55 параметр Negotiated Link Width оказался правильным х4 и поток высокий. Почему же на на матерях с чипсетом Z97 и B75 ( обе матери от Gigabyte ) в слоте PCIe x 16 ( в режиме PCIe x 4 ) плата опознаётся как PCIe х 1, а на матери с чипсетом P55 опознаётся как PCIe х 4? И что нужно сделать, чтобы и на матерях с чипсетом Z97 и B75 в слоте PCIe x 16 ( в режиме PCIe x 4 ) плата опознавалась бы как PCIe х 4? P.S. У меня на плате применён Lane Reversal.
  19. А какие, например, материнские платы ( какие производители и чипсеты? ) с механическими x16 слотами с подключенными электрически только первыми х4 бывают lane reversed, а какие без lane reversed?
  20. У B75 в PCI-слот было вставлена плата, но к ней не было обращений. Эта же плата была вставлена в PCI-слот и на P55, но к ней не было обращений. То есть условия тестирования были равные. Сейчас надо возобновить тестирование. krux, скажите пожалуйста, а с какой буквой предпочтительнее выбирать матери каждой серии ( 7-я , 8-я, 9-я ) - Q, B или Z и на какую цифру чтобы оканчивался номер чипсета - 5 или 7 ? Есть ли какое-то общее правило с точки зрения, чтобы по шине был наибольший поток? В таблице сравнения все модели с разными буквами ( Q, B или Z ) и цифрами ( 5 и 7 ) выглядят примерно одинаковыми ...
  21. Сейчас уточнил, падение скорости было на матери Gigabyte GA-P75_D3, т.е чипсет был не P75, а B75. krux, скажите пожалуйста, а с какой буквой предпочтительнее выбирать матери каждой серии ( 7-я , 8-я, 9-я ) - Q, B или Z и на какую цифру чтобы оканчивался номер чипсета - 5 или 7 ? Есть ли какое-то общее правило с точки зрения, чтобы по шине был наибольший поток? В таблице сравнения все модели с разными буквами ( Q, B или Z ) и цифрами ( 5 и 7 ) выглядят примерно одинаковыми ...
  22. Даже если встроенная графика не используется, а используется графическая карта в PCIe x 16 слоте? Спасибо за ответ!
  23. На большинстве матерей только два слота PCIe x 16, один из которых для видеокарты, а другой в режиме PCIe x 4. Так вот этот слот, который в режиме PCIe x 4, разве он может быть организован по-разному - напрямую из процессора или через южный мост? С этим всё нормально ( отправляются несколько запросов ), вопрос в том, почему на более старой матери P55 нет ограничений по скорости, а на более новой P75 - есть ...
  24. У меня нет Linux, проверял на WIN7 т.к работать должно на WIN7. А в чём идея? Почему плата может по-разному определяться на P55 и P75?