Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: EDK9.2 - CY7C1380D(SSRAM)
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
OLEG999
Дело в том, что этот модуль ЕМС1.0в помоему не очень подходит под этот SSRAM, но тем не мение на одном из бордов (виртекс4) он нормально работал с почти анологичной SSRAM кипарисов но только она была без АДСП И АДСЦ и на 1 мб, а эта на 2!

Проблема в следующем есть микросхема CY7C1380D, есть ЕДК9.2, ЕМС1.0в, надо только это все связать!!

На сайте кипарисов я нашел ман позваляющий убрать все сигналы управления до минимума!!Оставив только ОЕ и 4 BWE так как DQ 32-х разрядная, остольные заводятся на соответствующие разрешающие уровни!!

Но ничего не выходит!!

Еще вопрос шина адреса для меня немного странновата!Тоесть есть 3 различия между адресами(приведено на рисунке) A0, A1, A(2 to 18) я немного не понял этого решения!!Как сдесь задать адрес и как его задать в ЕДК??

Так что вот такие у меня проблемы!!

Подскажите если есть какие нибудь соображения!!

Спасибо зарание!
RKOB
Используем CY7C1471V25 (Flow-Through), проблем не обнаружено.
С адресацией все просто: важны лишь 0 и 1 биты, а остальные назначаете сами. Если вам поможет, вот его mhs-описание из моего проекта ():

PORT SRAM_0_DQ_pin = SRAM_0_DQ, DIR = IO, VEC = [0:31]
PORT SRAM_0_A_pin = SRAM_0_A, DIR = O, VEC = [0:31] # вывожу все адреса, цепляю только нужные
PORT SRAM_0_BEN_pin = SRAM_0_BEN, DIR = O, VEC = [0:3]
PORT SRAM_0_WEN_pin = SRAM_0_WEN, DIR = O
PORT SRAM_0_OEN_pin = SRAM_0_OEN, DIR = O, VEC = [0:0]
PORT SRAM_0_ADVLD_pin = SRAM_0_ADVLD, DIR = O
PORT SRAM_0_MODE_pin = SRAM_0_MODE, DIR = O
PORT SRAM_0_ZZ_pin = net_gnd, DIR = O
PORT SRAM_0_CE_pin = net_gnd, DIR = O
PORT SRAM_0_CEN_pin = net_vcc, DIR = O
PORT SRAM_0_CLK_pin = SRAM_0_clock, DIR = O
PORT SRAM_0_CLK_FB = SRAM_0_clk_FB, DIR = I, SIGIS = CLK, CLK_FREQ = 100000000

BEGIN opb_emc
PARAMETER INSTANCE = sram_0
PARAMETER HW_VER = 2.00.a
PARAMETER C_MAX_MEM_WIDTH = 32
PARAMETER C_MEM0_WIDTH = 32
PARAMETER C_NUM_BANKS_MEM = 1
PARAMETER C_SYNCH_MEM_0 = 1
PARAMETER C_OPB_CLK_PERIOD_PS = 10000
PARAMETER C_INCLUDE_DATAWIDTH_MATCHING_0 = 0
PARAMETER C_TCEDV_PS_MEM_0 = 0
PARAMETER C_TAVDV_PS_MEM_0 = 0
PARAMETER C_TWC_PS_MEM_0 = 0
PARAMETER C_TWP_PS_MEM_0 = 0
PARAMETER C_THZCE_PS_MEM_0 = 0
PARAMETER C_THZOE_PS_MEM_0 = 0
PARAMETER C_TLZWE_PS_MEM_0 = 0
PARAMETER C_SYNCH_PIPEDELAY_0 = 1
PARAMETER C_MEM0_BASEADDR = 0x40800000
PARAMETER C_MEM0_HIGHADDR = 0x40ffffff
BUS_INTERFACE SOPB = mb_opb
PORT OPB_Clk = sys_clk_s
PORT Mem_DQ = SRAM_0_DQ
PORT Mem_A = SRAM_0_A
PORT Mem_BEN = SRAM_0_BEN
PORT Mem_WEN = SRAM_0_WEN
PORT Mem_OEN = SRAM_0_OEN
PORT Mem_ADV_LDN = SRAM_0_ADVLD
PORT Mem_LBON = SRAM_0_MODE
END

Удачи!!!
Cont
Добрый день. Я тоже использую ssram от кипарисов. Вот только у меня есть проблема: чтобы что-то записать или считать из памяти в режиме Single beat(read/write), сигналы ADSP и GW нужно держать не по одному такту синхросигнала, а по два (в противном случае, из памяти считываются рандомные числа). В чем может быть проблема?
RKOB
Как формируете клок (с feedback)? на какой частоте работаете?
Cont
Клок у меня берется с CLKDLL, при этом он сдивнут по фазе на 180 градусов относительно системного клока.(и управляющих сигналов АДСП, ГВ, ОЕ ибо по даташиту там необходима задержка). Работал на частоте 166 мегагерца. Провел опыт - снизил частоту до 100 - теперь записывает за 1 такт. Видимо нужно точно по даташиту выдерживать все тайминги с ГВ, ОЕ, АДСП вплоть до 0,5 наносекунды, иначе на большой частоте ничего не выйдет.
des00
Цитата(Cont @ Oct 24 2008, 13:41) *
Клок у меня берется с CLKDLL, при этом он сдивнут по фазе на 180 градусов относительно системного клока.(и управляющих сигналов АДСП, ГВ, ОЕ ибо по даташиту там необходима задержка).


Насколько я помню рекомендации xilinx инверсия клока на PLL это порочная практика. Нужно разворачивать именно тот клок, на котором у вас работает контроллер. Но разворачивать по уму через DDR регистр. В противном случае пути клока и его инверсии могут сильно разойтись, тогда нужно констрейнить перекос между ними.
Serg`
Цитата(RKOB @ Sep 8 2008, 17:54) *
Используем CY7C1471V25 (Flow-Through), проблем не обнаружено.
С адресацией все просто: важны лишь 0 и 1 биты, а остальные назначаете сами. Если вам поможет, вот его mhs-описание из моего проекта ():

PORT SRAM_0_DQ_pin = SRAM_0_DQ, DIR = IO, VEC = [0:31]
PORT SRAM_0_A_pin = SRAM_0_A, DIR = O, VEC = [0:31] # вывожу все адреса, цепляю только нужные
PORT SRAM_0_BEN_pin = SRAM_0_BEN, DIR = O, VEC = [0:3]
PORT SRAM_0_WEN_pin = SRAM_0_WEN, DIR = O
PORT SRAM_0_OEN_pin = SRAM_0_OEN, DIR = O, VEC = [0:0]
PORT SRAM_0_ADVLD_pin = SRAM_0_ADVLD, DIR = O
PORT SRAM_0_MODE_pin = SRAM_0_MODE, DIR = O
PORT SRAM_0_ZZ_pin = net_gnd, DIR = O
PORT SRAM_0_CE_pin = net_gnd, DIR = O
PORT SRAM_0_CEN_pin = net_vcc, DIR = O
PORT SRAM_0_CLK_pin = SRAM_0_clock, DIR = O
PORT SRAM_0_CLK_FB = SRAM_0_clk_FB, DIR = I, SIGIS = CLK, CLK_FREQ = 100000000

BEGIN opb_emc
PARAMETER INSTANCE = sram_0
PARAMETER HW_VER = 2.00.a
PARAMETER C_MAX_MEM_WIDTH = 32
PARAMETER C_MEM0_WIDTH = 32
PARAMETER C_NUM_BANKS_MEM = 1
PARAMETER C_SYNCH_MEM_0 = 1
PARAMETER C_OPB_CLK_PERIOD_PS = 10000
PARAMETER C_INCLUDE_DATAWIDTH_MATCHING_0 = 0
PARAMETER C_TCEDV_PS_MEM_0 = 0
PARAMETER C_TAVDV_PS_MEM_0 = 0
PARAMETER C_TWC_PS_MEM_0 = 0
PARAMETER C_TWP_PS_MEM_0 = 0
PARAMETER C_THZCE_PS_MEM_0 = 0
PARAMETER C_THZOE_PS_MEM_0 = 0
PARAMETER C_TLZWE_PS_MEM_0 = 0
PARAMETER C_SYNCH_PIPEDELAY_0 = 1
PARAMETER C_MEM0_BASEADDR = 0x40800000
PARAMETER C_MEM0_HIGHADDR = 0x40ffffff
BUS_INTERFACE SOPB = mb_opb
PORT OPB_Clk = sys_clk_s
PORT Mem_DQ = SRAM_0_DQ
PORT Mem_A = SRAM_0_A
PORT Mem_BEN = SRAM_0_BEN
PORT Mem_WEN = SRAM_0_WEN
PORT Mem_OEN = SRAM_0_OEN
PORT Mem_ADV_LDN = SRAM_0_ADVLD
PORT Mem_LBON = SRAM_0_MODE
END

Удачи!!!



А где сдесь тайминги?? Ведь насколько я поня без них никак?? Для своей CY7Y1380D я нашел тайминги на частоту 250, 200 и 167 МГц в даташите, но микроб не потянет даж на сотне помоему с объемной переферией темболие кварц у меня 50МГц!! Так как же мне быть?? Я подогнал 2 тайминга на глазок проходит 2 теста 32- и 16-битные!! 8-битный не проходит!! Мб у кого нибудь есть тайминги на 75Мгц или ктонибудь знает где их достать??Буду оч благодарен!! А клок я использую системный sys_clk_s просто вывожу его внешним портом на ногу СРАМ без всяких ДЦМ с обратной связью! Это правильно??
RKOB
Цитата
А где сдесь тайминги??

Что вы понимаете под словом "тайминги"? я вам привел лишь пример описания аппаратной части.
Цитата
Для своей CY7Y1380D я нашел тайминги на частоту 250, 200 и 167 МГц в даташите, но микроб не потянет даж на сотне помоему с объемной переферией темболие кварц у меня 50МГц!! Так как же мне быть??

Еще как тянет...
Цитата
Я подогнал 2 тайминга на глазок проходит 2 теста 32- и 16-битные!!

И как же вы подогнали? Оч.интересно узнать!
Цитата
А клок я использую системный sys_clk_s просто вывожу его внешним портом на ногу СРАМ без всяких ДЦМ с обратной связью! Это правильно??

Можно и так (это если на низких частотах, т.к. память успевает), но лучше всего использовать feedback или же инверсный клок. А sys_clk_s у вас какой? Если 75 МГц, то должно работать как часики ;-) Если у вас не проходит 8-битный тест, то скорее всего у вас ошибка в адресации или перепутаны BE и Data.
Serg`
Цитата
PARAMETER C_TCEDV_PS_MEM_0 = 0
PARAMETER C_TAVDV_PS_MEM_0 = 0
PARAMETER C_TWC_PS_MEM_0 = 0
PARAMETER C_TWP_PS_MEM_0 = 0
PARAMETER C_THZCE_PS_MEM_0 = 0
PARAMETER C_THZOE_PS_MEM_0 = 0
PARAMETER C_TLZWE_PS_MEM_0 = 0



Вот что я понимаю под таймингами

Цитата
Я подогнал 2 тайминга на глазок проходит 2 теста 32- и 16-битные!!

И как же вы подогнали? Оч.интересно узнать!


Подогнал посмотрев на диограмму на осцилограффе!

А у вас какая частота и какие тайминги и какая плис????

Кстати я так понял в синхронном режиме
Код
PARAMETER C_SYNCH_MEM_0 = 1
тайминги ваобще прописовать не надо так как там есть два режима
Код
PARAMETER C_SYNCH_PIPEDELAY_0 = 1
и
Код
PARAMETER C_SYNCH_PIPEDELAY_0 = 2
со стандартными таймингами или я что то не понял??

Я сейчас работаю в асинхронном!!

Цитата
А клок я использую системный sys_clk_s просто вывожу его внешним портом на ногу СРАМ без всяких ДЦМ с обратной связью! Это правильно??

Можно и так (это если на низких частотах, т.к. память успевает), но лучше всего использовать feedback или же инверсный клок. А sys_clk_s у вас какой? Если 75 МГц, то должно работать как часики ;-) Если у вас не проходит 8-битный тест, то скорее всего у вас ошибка в адресации или перепутаны BE и Data.


ТОесть клок который я подаю на срам ядолжен сдвигать на 180 град относительно sys_clk_s??

А с 8-ми битным тестом седня разабрался БВЕ 3 и 4 банков перепутал!!

А feedback насколько я понял должна помимо микроба быть реализована еще и физически на плате!!1 ДЦМ тут помоему не поможет??Или яне прав??
RKOB
Цитата
у вас какая частота и какие тайминги и какая плис????

плис Virtex-4LX80, тайминги мои уже были приведены выше. Работаю на 100 МГц (и МВ и контроллер).
Цитата
есть клок который я подаю на срам ядолжен сдвигать на 180 град относительно sys_clk_s??

Я поступаю именно так.
Цитата
А feedback насколько я понял должна помимо микроба быть реализована еще и физически на плате!!1 ДЦМ тут помоему не поможет??Или яне прав??

Да. Вы правы.
Serg`
Ясно!Спасибо!Буд пробовать!А насчет синхронной опции вы пользуетесь ей так же как показано в примере??ТОесть синхронная=1 и режим=1?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.