torik 0 26 августа, 2013 Опубликовано 26 августа, 2013 · Жалоба Добавляю к проекту с циклоном 5 DDR3. Причем в топ-левеле объявлены пины: inout [3:0] ddr3t_dqs_p, inout [3:0] ddr3t_dqs_n, Тоже самое и в примере с отладкой. Вот только когда в pin-planer указываешь что ddr3t_dqs_p[3] - диффсигнал, автоматом создается ddr3t_dqs_p[3](n). И соответствттствтвссвенно я уже не могу сигналу ddr3t_dqs_n[3] назначить пин. А вот на отладке это сделано и нет никаких ddr3t_dqs_p[3](n). Как можно указать пинпланеру, что для ddr3t_dqs_p[3] парным является ddr3t_dqs_n[3]? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Methane 0 26 августа, 2013 Опубликовано 26 августа, 2013 · Жалоба Добавляю к проекту с циклоном 5 DDR3. Причем в топ-левеле объявлены пины: inout [3:0] ddr3t_dqs_p, inout [3:0] ddr3t_dqs_n, Тоже самое и в примере с отладкой. Вот только когда в pin-planer указываешь что ddr3t_dqs_p[3] - диффсигнал, автоматом создается ddr3t_dqs_p[3](n). И соответствттствтвссвенно я уже не могу сигналу ddr3t_dqs_n[3] назначить пин. А вот на отладке это сделано и нет никаких ddr3t_dqs_p[3](n). Как можно указать пинпланеру, что для ddr3t_dqs_p[3] парным является ddr3t_dqs_n[3]? Ему нужно указать что он LVDS, а остальное он сам догадается. К сожалению нельзя назначать какие пины парные. Они такие аппаратно. Не через пин-планер. (* altera_attribute = "-name IO_STANDARD \"LVDS\" " *) (* chip_pin = "J8" *) output DAC_DDS_DATA_CLK; Это для просто DDR Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
torik 0 26 августа, 2013 Опубликовано 26 августа, 2013 · Жалоба Как это нельзя? Откройте проект из примеров с отладкой и удивитесь - там все назначено! Я бы и не запаривался, но в топ-левеле на память должны идти и ddr3t_dqs_p и ddr3t_dqs_n. А если ква сам назначает парный пин, то как его нафиг заведешь куда-то... Может я вообще зря запариваюсь. Но тогда поясните мне, кто пользовался DDR3, куда подключать выходы модуля, сооответствтствасвуюющие сигналам _n. Вот кусо кода, где подключен qsys, чё пишем вместо "???????????????"?: qsys1 q1 ( .clk_in0_clk(clk10_100MHz_p), .reset_in0_reset_n(global_reset_n), //ddre .ddr3t_mem_a(ddr3t_a), .ddr3t_mem_ba(ddr3t_ba), .ddr3t_mem_ck(ddr3t_clk_p), .ddr3t_mem_ck_n(??????????????????????????), .ddr3t_mem_cke(ddr3t_cke), .ddr3t_mem_cs_n(ddr3t_csn), .ddr3t_mem_dm(ddr3t_dm), .ddr3t_mem_ras_n(ddr3t_rasn), .ddr3t_mem_cas_n(ddr3t_casn), .ddr3t_mem_we_n(ddr3t_wen), .ddr3t_mem_reset_n(ddr3t_resetn), .ddr3t_mem_dq(ddr3t_dq), .ddr3t_mem_dqs(ddr3t_dqs_p), .ddr3t_mem_dqs_n(???????????????????????????????????????), .ddr3t_mem_odt(ddr3t_odt), .ddr3t_oct_rzqin(rzqin), .ddr3t_oct_sharing_seriesterminationcontrol(), .ddr3t_oct_sharing_parallelterminationcontrol() ); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexadmin 0 26 августа, 2013 Опубликовано 26 августа, 2013 · Жалоба Как это нельзя? Откройте проект из примеров с отладкой и удивитесь - там все назначено! Я бы и не запаривался, но в топ-левеле на память должны идти и ddr3t_dqs_p и ddr3t_dqs_n. А если ква сам назначает парный пин, то как его нафиг заведешь куда-то... Там Пин-планер в этом смысле чудной. Лучше всего назначить _p, а остальное прописать руками в qsf или просто забить - обычно проатывает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
torik 0 26 августа, 2013 Опубликовано 26 августа, 2013 · Жалоба Прописывать напрямую в qsf вроде прокатывает... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
krux 8 26 августа, 2013 Опубликовано 26 августа, 2013 · Жалоба pin planer - он для "посмотреть-проверить". Да, им можно назначать пины, но не обязательно именно им. Даже наоборот, лучше всего вообще не им, а import assignments и затягивать qsf с готовой распиновкой. Современные Electo-CAD умеют их формировать, а дальше они кочуют из проекта в проект. А специфичные сигналы, дифпары, fakes, mimics и прочие хитрые вещи лучше вообще явно реализовывать через примитивы, как это делают сами альтеровцы в IP-корках. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
id_gene 0 27 августа, 2013 Опубликовано 27 августа, 2013 · Жалоба Как это нельзя? Откройте проект из примеров с отладкой и удивитесь - там все назначено! Я бы и не запаривался, но в топ-левеле на память должны идти и ddr3t_dqs_p и ddr3t_dqs_n. А если ква сам назначает парный пин, то как его нафиг заведешь куда-то... Но ведь для DQS сигналов эти пины парами действительно аппаратно сделаны. Вы их хотите разделить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
torik 0 27 августа, 2013 Опубликовано 27 августа, 2013 · Жалоба Я себе представлял так: в топлевеле объявляем для дифсигнала только один сигнал, например, ddr3t_dqs_p. При назначении конкретного пина и указания что он дифференциальный автоматически назначится парный. Но тогда какого хрена надо подать на вход ddr3t_dqs_n мегафункции ддр3? Вот я и прописал в qsf ddr3t_dqs_n, может это и не правильно (во всяком случае пока не работает:))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
krux 8 27 августа, 2013 Опубликовано 27 августа, 2013 · Жалоба HDL - это Hardware Definition Language - язык описания аппаратуры, а не язык автоматизированной волшебной телепатии. Два пина = два сигнала, потом подключаете их к соответствующему примитиву. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться