|
pll в цык-2, как сделать |
|
|
|
 |
Ответов
|
Dec 9 2009, 11:13
|
Частый гость
 
Группа: Участник
Сообщений: 118
Регистрация: 13-09-09
Пользователь №: 52 331

|
1) с PLL разобрался. работает
2) с памятью разобрался - адрес увеличивается исправно
3) запись в регистры глючит
обращение к регистрам когда A=0, WE=0, CE=0
пересылка данных для памяти когда A=1, WE=0, CE=0
ГЛЮК: регистры отрабатывают независимо от того A=1 или 0 - срабатывают по-любому
делал нарезку: WE,CE,A,D
по фронту Clk проверял A, WE, CE, исходя из результатов сравнения - присваивал регистрам значения.
Обращения к регистрам сделано через порт:
*(short*)(BaseAddr+0x000) = Data
Обращение к памяти через порт:
*(short*)(BaseAddr+0x100) = Data
Нетрудно догадаться , что смещение 0x000 и 0x100 - порождается адресным битом A
Но при записи в память иногда происходит запись в регистры с какого-то перепугу.
как побороть проблему?
|
|
|
|
|
Dec 9 2009, 11:21
|
iBuilder©
   
Группа: Свой
Сообщений: 519
Регистрация: 14-07-04
Из: Минск
Пользователь №: 322

|
Может проблема в этом? Цитата(%-) @ Dec 9 2009, 13:13)  делал нарезку: WE,CE,A,D Рискну предположить что нарезаете эти сигналы независимо, что может быть не корректно. Рекомендуется нарезать уже функцию от этих сигналов, и её анализировать. Иначе можно ловить ситуации, когда один сигнал раньше на такт, а друго позже проходит, и из-за этого что-то не срастается. Где-то встречал описание таких ошибок, не помню только где. Там документ был тоже по синхронизации клоковых доменов. А вообще - код показывайте.
|
|
|
|
|
Dec 9 2009, 11:47
|
Частый гость
 
Группа: Участник
Сообщений: 118
Регистрация: 13-09-09
Пользователь №: 52 331

|
Цитата(Builder @ Dec 9 2009, 15:21)  Рекомендуется нарезать уже функцию от этих сигналов, и её анализировать. Иначе можно ловить ситуации, когда один сигнал раньше на такт, а друго позже проходит, и из-за этого что-то не срастается. Где-то встречал описание таких ошибок, не помню только где. Там документ был тоже по синхронизации клоковых доменов. А вообще - код показывайте. Привожу фрагмент записи в регистры и увеличение адреса памяти: Код process(Clk) begin if rising_edge(Clk) then if R_M(0)='0' then WriteAddress:=("101000000"*Y)+X; else WriteAddress:=("010100000"*Y)+X; end if; end if; end process;
process(Clk) begin if rising_edge(Clk) then CE<=Port_CE; WE<=Port_WE; A<=Port_A; D<=Port_D; end if; end process;
process(Clk) 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 H2:std_logic_vector(7 downto 0); variable Y0:std_logic_vector(7 downto 0); variable Y1:std_logic_vector(7 downto 0); begin if rising_edge(Clk) then if State=0 then if (CE='0' and WE='1') then State:=1; end if; else if (CE='0' and WE='0') then State:=0; if A='0' then case D(15 downto 12) is when "1001" => R_P:=D(0); when "1010" => R_W:=D(8 downto 0); W2:='0'&R_W(8 downto 1); X0:="010100000"-W2; X1:="010011111"+W2; X:=X0; when "1011" => R_H:=D(7 downto 0); H2:='0'&R_H(7 downto 1); Y0:="01111000"-H2; Y1:="01110111"+H2; Y:=Y0; when others =>null; end case; else 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 if; end process;
VRAM0_CE<='0'; VRAM1_CE<='0';
VRAM0_OE<=H(0) when (R_P='0' and Blank='1') else '1'; VRAM1_OE<=H(0) when (R_P='1' and Blank='1') else '1';
process(Clk) begin if rising_edge(Clk) then if A='1' then if R_P='0' then VRAM0_WE<='1'; VRAM1_WE<=WE; else VRAM0_WE<=WE; VRAM1_WE<='1'; end if; else VRAM0_WE<='1'; VRAM1_WE<='1'; end if; end if; end process;
process(Clk) begin if rising_edge(Clk) then if R_P='0' then VRAM0_A<=ReadAddress; VRAM1_A<=WriteAddress; VRAM0_D<=(others => 'Z'); VRAM1_D<=D; else VRAM0_A<=WriteAddress; VRAM1_A<=ReadAddress; VRAM0_D<=D; VRAM1_D<=(others => 'Z'); end if; end if; end process; полный текст вложил.
|
|
|
|
Сообщений в этой теме
%-) pll в цык-2 Dec 6 2009, 14:01 Kuzmi4 MegaWizard Plug-In Manager спасёт отца русской дем... Dec 6 2009, 14:33 Methane Цитата(%-) @ Dec 6 2009, 16:01) ... Dec 6 2009, 14:38 %-) Подключил PLL следующим образом. В мегавизарде сфо... Dec 9 2009, 01:01 des00 Цитата(%-) @ Dec 8 2009, 19:01) ... Dec 9 2009, 03:58  %-) Цитата(des00 @ Dec 9 2009, 07:58) телепат... Dec 9 2009, 04:44   des00 Цитата(%-) @ Dec 8 2009, 22:44) ... Dec 9 2009, 05:37    %-) Цитата(des00 @ Dec 9 2009, 09:37) Кстати ... Dec 9 2009, 06:11     des00 Цитата(%-) @ Dec 9 2009, 00:11) ... Dec 9 2009, 06:23      %-) Цитата(des00 @ Dec 9 2009, 10:23) но у ва... Dec 9 2009, 07:21       des00 Цитата(%-) @ Dec 9 2009, 01:21) ... Dec 9 2009, 07:50        Builder Цитата(des00 @ Dec 9 2009, 09:50) ИМХО я ... Dec 9 2009, 08:09         %-) Цитата(Builder @ Dec 9 2009, 12:09) Поищу... Dec 9 2009, 08:52          Builder Цитата(%-) @ Dec 9 2009, 10:52) ... Dec 9 2009, 09:16     Builder Цитата(%-) @ Dec 9 2009, 09:11) ... Dec 9 2009, 06:36   Builder Цитата(%-) @ Dec 9 2009, 07:44) ... Dec 9 2009, 06:21  %-) Цитата(Builder @ Dec 9 2009, 15:21) Рискн... Dec 9 2009, 13:25 des00 Цитата(%-) @ Dec 9 2009, 05:13) ... Dec 9 2009, 12:01  %-) Цитата(des00 @ Dec 9 2009, 16:01) 1. как ... Dec 9 2009, 12:04   des00 Цитата(%-) @ Dec 9 2009, 06:04) ... Dec 9 2009, 17:29    %-) Цитата(des00 @ Dec 9 2009, 20:29) дорого ... Dec 9 2009, 23:28     des00 Цитата(%-) @ Dec 9 2009, 17:28) ... Dec 10 2009, 06:30 %-) Итак...
После осознанного перепрочтения всех свои... Dec 10 2009, 13:38 Builder Цитата(%-) @ Dec 10 2009, 15:38)... Dec 10 2009, 16:47  %-) Цитата(Builder @ Dec 10 2009, 19:47) Вы х... Dec 10 2009, 22:43   Builder Цитата(%-) @ Dec 11 2009, 00:43)... Dec 11 2009, 00:43    %-) Цитата(Builder @ Dec 11 2009, 03:43) Вот ... Dec 11 2009, 02:58 des00 Цитата(%-) @ Dec 10 2009, 07:38)... Dec 11 2009, 05:01 %-) Цитата(des00 @ Dec 11 2009, 08:01) если в... Dec 11 2009, 05:35  des00 Цитата(%-) @ Dec 10 2009, 23:35)... Dec 11 2009, 06:30
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|