реклама на сайте
подробности

 
 
> ПЛИС + SRAM, посоветуйте
%-)
сообщение Nov 27 2009, 00:49
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 118
Регистрация: 13-09-09
Пользователь №: 52 331



есть порт для ввода данных из хост-процессора в ПЛИС (запись в ПЛИС)

к ПЛИС подключена SRAM

нужно организовать запись в SRAM через ПЛИС.
при этом адрес на память выставляет сама ПЛИС.

сделано вот так:

Код
SRAM_D<=Port_D;      --линии данных порта ПЛИС соединяем с линиями данных SRAM
SRAM_A<=Address;    --линии адреса SRAM соединены со счётчиком ПЛИС
SRAM_CS<=Port_CS;  --линия выбора SRAM соединена с линией порта ПЛИС
SRAM_OE<='1';          --чтение не используется
SRAM0_WE<=Port_WE; --линия разрешения записи SRAM соединена с линией порта ПЛИС

process(Port_WE) --увеличение адреса на 1
begin
if falling_edge(Port_WE) then
  if Port_CS='0' then
   if Address=1000 then
    Address<=(others => '0');
   else
    Address<=Address+1;
   end if;
  end if;
end if;
end process;


По времянкам.

Tsetup=20нс
Thold=20нс
Twrite=20нс

Тем не менее, в силу каких-то обстоятельств(возможно когда на линии данных 0xFFFF) ИНОГДА происходит пропуск увеличения адреса - он как бы тот же.

Прошу покритиковать и обсудить код. А также причины, вызвавшие сей эффект

Сообщение отредактировал %-) - Nov 27 2009, 01:24
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
%-)
сообщение Nov 27 2009, 09:02
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 118
Регистрация: 13-09-09
Пользователь №: 52 331



проблема почти выявлена.

инкремент адреса иногда не срабатывает когда цвет близок к белому (большинство битов =1)

заземлил кабель наконец-то - ничего не дало.

действительно, после подъёма WE времянка укороченная. Удалось Tsetup=1, Twrite=1, Thold=0, тоесть 2 такта @150 МГц => 75МГц

но как только встречается белый цвет - всё глюкает - кадр крутится слеванаправо и сверхувниз...

уже мозг сломал, но причину ЯВНО не нашёл sad.gif smile3046.gif

на текущий момент:

Код
process(Port_WE,Port_CS)
variable W2:std_logic_vector(8 downto 0);
variable X0:std_logic_vector(8 downto 0);
variable X1:std_logic_vector(8 downto 0);
variable X:std_logic_vector(8 downto 0);
variable H2:std_logic_vector(7 downto 0);
variable Y0:std_logic_vector(7 downto 0);
variable Y1:std_logic_vector(7 downto 0);
variable Y:std_logic_vector(7 downto 0);
begin
if rising_edge(Port_WE) then
  if Port_CS='0' then
   --Register
   if Port_A='0' then
    case Port_D(15 downto 12) is
     when "1000" =>
      R_M:=Port_D(2 downto 0);
     when "1001" =>
      if ((R_M(2)='0' and VBlank='0') or (R_M(2)='1' and Blank='0')) then
       R_P:=Port_D(0);
      end if;
     when "1010" =>
      R_W:=Port_D(8 downto 0);
      W2:='0'&R_W(8 downto 1);
      X0:="010100000"-W2;
      X1:="010011111"+W2;
      X:=X0;
     when "1011" =>
      R_H:=Port_D(7 downto 0);
      H2:='0'&R_H(7 downto 1);
      Y0:="01111000"-H2;
      Y1:="01110111"+H2;
      Y:=Y0;
     when others =>
      null;
    end case;
   --VideoRAM
   else
    WriteAddress<=("101000000"*Y)+X;
    if X=X1 then
     X:=X0;
     if Y=Y1 then
      Y:=Y0;
     else
      Y:=Y+1;
     end if;
    else
     X:=X+1;
    end if;
   end if;
  end if;
end if;
end process;


Сообщение отредактировал %-) - Nov 27 2009, 09:04
Go to the top of the page
 
+Quote Post
alevnew
сообщение Dec 1 2009, 07:06
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 90
Регистрация: 17-05-07
Пользователь №: 27 775



Цитата(%-) @ Nov 27 2009, 15:02) *
инкремент адреса иногда не срабатывает когда цвет близок к белому (большинство битов =1)


По моему типичный глюк "ground bounce" - плохая земля между FPGA и памятью.
Практически один в один ситуация была. Лечилась пропайкой доп. земли между FPGA и другой микрухой (памятью в вашем случае).

Смею предположить, что плата - двухслойка? Я прав?

Сообщение отредактировал alevnew - Dec 1 2009, 07:08
Go to the top of the page
 
+Quote Post
%-)
сообщение Dec 1 2009, 07:11
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 118
Регистрация: 13-09-09
Пользователь №: 52 331



Цитата(alevnew @ Dec 1 2009, 11:06) *
По моему типичный глюк "ground bounce" - плохая земля между FPGA и памятью.
Практически один в один ситуация была. Лечилась пропайкой доп. земли между FPGA и другой микрухой (памятью в вашем случае).

Смею предположить, что плата - двухслойка? Я прав?


Плата с процессором - 4 слойка
Плата с ПЛИС - отладочная от Terasic. Тоже вроде 4 слоя(не менее)

Соединены ленточным кабелем длиной 12см + 8 см на печатке до ПЛИС + 3 см до процессора на плате

кабель в золотинке и он за GND-нен.

Народ, выскажитесь по моему синхронному автомату.
Будет жить? rolleyes.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- %-)   ПЛИС + SRAM   Nov 27 2009, 00:49
- - Builder   Цитата(%-) @ Nov 27 2009, 04:49)...   Nov 27 2009, 02:22
|- - %-)   Цитата(Builder @ Nov 27 2009, 05:22) Врем...   Nov 27 2009, 03:25
|- - Builder   Цитата(%-) @ Nov 27 2009, 06:25)...   Nov 27 2009, 08:15
- - BSV   Нужно в каждом цикле обращения выполнять операции ...   Nov 27 2009, 05:08
|- - %-)   Цитата(BSV @ Nov 27 2009, 08:08) Нужно в ...   Nov 27 2009, 06:14
- - sazh   Цитата(%-) @ Nov 27 2009, 03:49)...   Nov 27 2009, 06:56
|- - des00   Цитата(%-) @ Nov 27 2009, 03:02)...   Nov 28 2009, 10:01
|- - sazh   Цитата(%-) @ Dec 1 2009, 10:11) ...   Dec 1 2009, 12:02
- - %-)   значит так. 1) буфер чисто на данные ставить нель...   Nov 29 2009, 04:25
|- - sazh   Цитата(%-) @ Nov 29 2009, 07:25)...   Nov 29 2009, 09:28
- - %-)   Решил вникнуть в синхронный дизайн и сделать обраб...   Dec 1 2009, 02:28
- - %-)   я в стадии крайнего офонарения!!! про...   Dec 1 2009, 13:47
- - %-)   сделал синхронную нарезку от внешнего кварцевого г...   Dec 7 2009, 02:06
- - des00   Цитата(%-) @ Dec 6 2009, 20:06) ...   Dec 7 2009, 04:23
- - %-)   Цитата(des00 @ Dec 7 2009, 08:23) для шин...   Dec 7 2009, 05:08


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 12:15
Рейтинг@Mail.ru


Страница сгенерированна за 0.01908 секунд с 7
ELECTRONIX ©2004-2016