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

GAYVER

Свой
  • Публикаций

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Частый гость

Контакты

  • Сайт
    http://
  • ICQ
    233785211

Старые поля

  • skype
    gayver_trtu

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

1 315 просмотров профиля
  1. ну ветка форума называетя "языки проектирования на ПЛИС", так что сильно сомневаюсь что сюда заглянут люди, имеющие дело со схематиками в пикаде :). ISE 14.7, *.vhd? => *.sch
  2. на схематике дженерики можно добавлять через параметры символа. а как протащить параметр в схематик из вхдл-го топ-лвл-а?
  3. тайна раскрыта :). в недрах дизайна обнаружен буфер, на вход которого заведена синхра (которая идет и на память), а выход - на логику. выход буфера законстрэйнен через CLOCK_DEDICATED_ROUTE. после ЭНДки полученный сигнал сразу вытаскивался на пин плисины и нигде внутри больше не использовался. но выход буфера был воспринят как клок и растащен дальше на память... пересмотреть не получится - есть заданный кристалл и заданные алгоритмы, под которые нужно определенное количество памяти. кто-то несколько лет назад посчитал что памяти хватает. теперь приходится изворачиваться и архитектурно и алгоритмически - чтобы впихнуть невпихуемое... ну 2-3 часа это он какраз пытается впихнуть невпихуемое. алгоритм же 3 или 4 раза стартует с нуля, в случае неудачи предыдущего шага. а если все в порядке, то разводка с учетом УЦФа минут за 10-15 проходит :)
  4. вот я и смотрел что там с клоками не так... пока ничего не насмотрел - все берется с ДСМа, раскидывается через буфг. взять блочку не получится ввиду ее нехватки. сегодня еще попробую однопортовую сделать вместо двушки. самокритично, потомучто кроме расплывчатого направления "смотри клоки" ничего не понятно - куда именно смотреть и почему вообще какие то проблемы с клоком возникли. а с подобным в своей практике ранее не сталкивался, чтобы хоть как то сократить область поисков. потому как каждая неудачная разводка до момента выкидывания репортов крутится часа 2-3... и выкинуть часть проекта не получится - это и так тестовая рыба без основного вычислителя зы вспоминается случай с ИСЕ, когда в процессе разводки неправильно собиралась шина :). допустим, есть шина NAME(7:0) и несколько сигналов NAME_1, NAME_5. после разводки шина имела вид: NAME(7:0)= NAME(7) & NAME(6) & NAME_5 & NAME(4) & NAME(3) & NAME(2) & NAME_1 & NAME(0) пока я это нашел... пол кристалла облазил )) вот чую сейчас будет что то подобное...
  5. блок двухпортовой распределенки с синхронной записью и асинхронным чтением. описан по шаблону из хелпа. по объему - четверть от максимально доступной. на мапе выдает: The following instances are the last set of instances that failed to place: 0. B_IN_ADC/B_RAMD_IN_test/Mram_RAM_RE_STR11_RAMD_O (size: 8) LUTM B_IN_ADC/B_RAMD_IN_test/Mram_RAM_RE_STR11_RAMD_O LUTM B_IN_ADC/B_RAMD_IN_test/Mram_RAM_RE_STR11_RAMD LUTM B_IN_ADC/B_RAMD_IN_test/Mram_RAM_RE_STR11_RAMD_O LUTM B_IN_ADC/B_RAMD_IN_test/Mram_RAM_RE_STR11_RAMC LUTM B_IN_ADC/B_RAMD_IN_test/Mram_RAM_RE_STR11_RAMD_O LUTM B_IN_ADC/B_RAMD_IN_test/Mram_RAM_RE_STR11_RAMB LUTM B_IN_ADC/B_RAMD_IN_test/Mram_RAM_RE_STR11_RAMD_O LUTM B_IN_ADC/B_RAMD_IN_test/Mram_RAM_RE_STR11_RAMA ............................................. These instances could be impacted by the following constraints (the line IDs below correspond with the instances above): Clock Region restrictions 0. LUTM B_IN_ADC/B_RAMD_IN_test/Mram_RAM_RE_STR11_RAMD_O driver: DCM B_PLL/DCM_inst1 @ DCM_X0Y3 LUTM B_IN_ADC/B_RAMD_IN_test/Mram_RAM_RE_STR11_RAMD_O driver: DCM B_PLL/DCM_inst1 @ DCM_X0Y3 LUTM B_IN_ADC/B_RAMD_IN_test/Mram_RAM_RE_STR11_RAMD_O driver: DCM B_PLL/DCM_inst1 @ DCM_X0Y3 LUTM B_IN_ADC/B_RAMD_IN_test/Mram_RAM_RE_STR11_RAMD_O driver: DCM B_PLL/DCM_inst1 @ DCM_X0Y3 LUTM B_IN_ADC/B_RAMD_IN_test/Mram_RAM_RE_STR11_RAMD_O driver: DCM B_PLL/DCM_inst1 @ DCM_X0Y3 LUTM B_IN_ADC/B_RAMD_IN_test/Mram_RAM_RE_STR11_RAMD_O driver: DCM B_PLL/DCM_inst1 @ DCM_X0Y3 LUTM B_IN_ADC/B_RAMD_IN_test/Mram_RAM_RE_STR11_RAMD_O driver: DCM B_PLL/DCM_inst1 @ DCM_X0Y3 LUTM B_IN_ADC/B_RAMD_IN_test/Mram_RAM_RE_STR11_RAMD_O driver: DCM B_PLL/DCM_inst1 @ DCM_X0Y3 CLOCKREGION_X0Y2, CLOCKREGION_X1Y2 ............................................................... для меня тут никакой смысловой нагрузки... куда смотреть, чего делать?
  6. если вопрос стоит в том чтобы самому что то городить, то мне будет проще переписать входной блок под одинаковую частоту :). это если нет решения на пару строк кода или использование чего-то стандартного...
  7. фифо, конечно, круто, но в 6 спартане его нет... или я что то путаю ))
  8. в голове уже каша, поэтому обращаюсь к коллективному бессознательному. имеется 2 связанных сигнала (данные-строб). их надо перевести с бОльшей частоты на мЕньшую (кратность примерно 2,6). сначала взял старую проверенную заготовку и вкорячил ее на обе линии. а потом задумался - из-за того что переход в точке 0 затиган - рано или поздно вылезет ситуация, когда произойдет рассинхрон фронтов данных и строба, и на меньшей частоте по стробу защелкнется не то данное. и, собствено, вопрос - как этого избежать? зы я мог не точно выразиться - под стробом понимается сигнал валидности данных. грубо говоря WDATA+WVALID с акси
  9. Цитата(Plain @ Dec 30 2017, 17:32) Сноску к Вашей Табл.3 соизвольте прочесть. в последние дни голова забита другим, поэтому допустил грубейшую логическую ошибку. плюс, похоже, накосячил с монтажом. на каникулах перепроверю
  10. Цитата(Vasily_ @ Dec 30 2017, 12:07) А это как так получается? ээээ... ну пин как бы инверсный. "рабочее" значение - LOW
  11. Цитата(Plain @ Dec 29 2017, 23:11) Вы о чём-то о своём, на моей схеме такая комбинация исключена. сброс подтянут к питанию. на этом пине триггера всегда логический 0. сигнал ЛОСТ прыгает 0-1. вот вам и комбинация 00
  12. Цитата(Plain @ Dec 29 2017, 01:36) Две единицы на выходах — это паспортное запрещённое состояние, достигаемое двумя нулями на S и R. откровенно говоря первый раз с таким сталкиваюсь. обычно сброс в приоритете. и что с этим делать? добавлять цепь управления сбросом, которая будет блокировать это состояние?
  13. Цитата(Plain @ Dec 2 2016, 17:05) наконец то дошли руки до сборки. и столкнулся с таким непонятно-неприятным моментом - периодически прямой и обратный выходы второго триггера стоят в единицах. оба. втф?
  14. Цитата(Anton1990 @ May 9 2017, 11:14) А в чем проблема? частота 150 МГц довольно низнакая (я реально принимал 250 МГц 14 бит с АЦП). Разрядность невысокая. Выравнивание можно и даже нужно замутить на встроенных блоках задержки (если Xilinx). Так что проблем быть не должно если конечно плата разведена более или менее нормально. встроенные блоки задержки дают максимальную задержку в 2-3 наны. 32 тапа по (кажись) 80 пикосекунд когда то собирал модуль автоподстройки данных от ацп для ддр и кюдр интерфейсов. но там черт ногу сломит в коде ))). да и не помню уже особо тонкостей логики функционирования автору смотреть юзер гайды по ISERDESE b IODELAY
  15. свежий пример с 6 спартана ))) CODE#Created by Constraints Editor (xc6slx4-tqg144-3) - 2017/04/18 NET "CLK_EXT" TNM_NET = CLK_EXT; NET "CLK_EXT" LOC = P134; NET "CLK_EXT" IOSTANDARD = LVCMOS33; TIMESPEC TS_CLK_EXT = PERIOD "CLK_EXT" 31.25 ns HIGH 50%; NET "IZP" LOC = P81; NET "IZP" IOSTANDARD = LVCMOS33; NET "KIZP[0]" LOC = P78; NET "KIZP[0]" IOSTANDARD = LVCMOS33; NET "KIZP[1]" LOC = P79; NET "KIZP[1]" IOSTANDARD = LVCMOS33; NET "KIZP[2]" LOC = P80; NET "KIZP[2]" IOSTANDARD = LVCMOS33; NET "KIZP[3]" LOC = P82; NET "KIZP[3]" IOSTANDARD = LVCMOS33; NET "KIZP[4]" LOC = P83; NET "KIZP[4]" IOSTANDARD = LVCMOS33; NET "KIZP[5]" LOC = P102; NET "KIZP[5]" IOSTANDARD = LVCMOS33; NET "KIZP[6]" LOC = P104; NET "KIZP[6]" IOSTANDARD = LVCMOS33; NET "KIZP[7]" LOC = P105; NET "KIZP[7]" IOSTANDARD = LVCMOS33; #добавить размещение 2 разрядов КИЗП, когда будет в наличии плата!!!!!!!!!!!!! #SPI INPUT NET "DI_I" LOC = P43; NET "DI_I" IOSTANDARD = LVCMOS33; NET "DO_I" LOC = P44; NET "DO_I" IOSTANDARD = LVCMOS33; NET "CS_I" LOC = P45; NET "CS_I" IOSTANDARD = LVCMOS33; NET "SCLK_I" LOC = P50; NET "SCLK_I" IOSTANDARD = LVCMOS33; #SPI OUTPUT NET "DI_O" LOC = P6; NET "DI_O" IOSTANDARD = LVCMOS33; NET "DO_O" LOC = P140; NET "DO_O" IOSTANDARD = LVCMOS33; NET "CS_O" LOC = P5; NET "CS_O" IOSTANDARD = LVCMOS33; NET "SCLK_O" LOC = P7; NET "SCLK_O" IOSTANDARD = LVCMOS33; # Termodatchik-1 NET "WIRE[1]" LOC = P100 |IOSTANDARD = LVTTL; NET "UBUF[1]" LOC = P99; NET "UBUF[1]" IOSTANDARD = LVCMOS33; # Termodatchik-2 NET "WIRE[2]" LOC = P94 |IOSTANDARD = LVTTL; NET "UBUF[2]" LOC = P93; NET "UBUF[2]" IOSTANDARD = LVCMOS33; #Created by Constraints Editor (xc6slx4-tqg144-3) - 2017/04/18 INST "KIZP_inst/rgu_for[0].fd_rgu" TNM = tg_rgu; INST "KIZP_inst/rgu_for[1].fd_rgu" TNM = tg_rgu; INST "KIZP_inst/rgu_for[2].fd_rgu" TNM = tg_rgu; INST "KIZP_inst/rgu_for[3].fd_rgu" TNM = tg_rgu; INST "KIZP_inst/rgu_for[4].fd_rgu" TNM = tg_rgu; INST "KIZP_inst/rgu_for[5].fd_rgu" TNM = tg_rgu; INST "KIZP_inst/rgu_for[6].fd_rgu" TNM = tg_rgu; INST "KIZP_inst/rgu_for[7].fd_rgu" TNM = tg_rgu; INST "KIZP_inst/rgu_for[8].fd_rgu" TNM = tg_rgu; INST "KIZP_inst/rgu_for[9].fd_rgu" TNM = tg_rgu; INST "KIZP_inst/rgu_for[10].fd_rgu" TNM = tg_rgu; INST "KIZP_inst/rgu_for[11].fd_rgu" TNM = tg_rgu; INST "KIZP_inst/rgu_for[12].fd_rgu" TNM = tg_rgu; INST "KIZP_inst/rgu_for[13].fd_rgu" TNM = tg_rgu; INST "KIZP_inst/rgu_for[14].fd_rgu" TNM = tg_rgu; INST "KIZP_inst/rgu_for[15].fd_rgu" TNM = tg_rgu; #Created by Constraints Editor (xc6slx4-tqg144-3) - 2017/04/18 INST "KIZP_inst/rg_izp_for[0].fd_izp" TNM = tg_rg_izp; INST "KIZP_inst/rg_izp_for[1].fd_izp" TNM = tg_rg_izp; INST "KIZP_inst/rg_izp_for[2].fd_izp" TNM = tg_rg_izp; INST "KIZP_inst/rg_izp_for[3].fd_izp" TNM = tg_rg_izp; INST "KIZP_inst/rg_izp_for[4].fd_izp" TNM = tg_rg_izp; INST "KIZP_inst/rg_izp_for[5].fd_izp" TNM = tg_rg_izp; INST "KIZP_inst/rg_izp_for[6].fd_izp" TNM = tg_rg_izp; INST "KIZP_inst/rg_izp_for[7].fd_izp" TNM = tg_rg_izp; #раскоментить когда будут известны расположение этих пинов на плисине!!!!!!!!!! #INST "KIZP_inst/rg_izp_for[8].fd_izp" TNM = tg_rg_izp; #INST "KIZP_inst/rg_izp_for[9].fd_izp" TNM = tg_rg_izp; ##INST "KIZP_inst/rg_izp_for[10].fd_izp" TNM = tg_rg_izp; ##INST "KIZP_inst/rg_izp_for[11].fd_izp" TNM = tg_rg_izp; ##INST "KIZP_inst/rg_izp_for[12].fd_izp" TNM = tg_rg_izp; #Created by Constraints Editor (xc6slx4-tqg144-3) - 2017/04/18 TIMESPEC TS_izp = FROM "tg_rgu" TO "tg_rg_izp" 8 ns; Цитата(Golikov A. @ Apr 25 2017, 14:06) Дальше кратко по сути: - Задавать в 0 и пусть пыжится не вариант. Он будет долго пыжится, а потом может устать и вообще бросить что-то делать, то что получится не факт что самое лучшее или что это не сожрет кучу ресурсов. если мне не изменяет память то в настройках задается количество неудачных проходов, через которые прекращается разводка. и, опять же, если мне не изменяет память то по умолчанию это 4 или 5 проходов