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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Cyclone V SoC + DDR3, Подскажите по доступу
Serb1987
сообщение Feb 19 2014, 10:00
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 12-11-12
Пользователь №: 74 345



Добрый день, есть борда с циклоном 5 на борту, нужно получить доступ к памяти, но на этой борде память расположена со стороны процессорного модуля (HPS), а получить доступ нужно из логики, подскажите пожалуйста как лучше поступить или откуда копать необходимую инфу?
Go to the top of the page
 
+Quote Post
warrior-2001
сообщение Feb 19 2014, 12:25
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 9-10-08
Из: Таганрог, Ростовская обл.
Пользователь №: 40 792



По новым чипам самая лучшае инфа - это мануал разработчика чипа.
Тут как раз находится такая инфа.


--------------------
Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые могут избегать ее. Гении ее устраняют.
Go to the top of the page
 
+Quote Post
untone
сообщение Feb 22 2014, 18:18
Сообщение #3





Группа: Участник
Сообщений: 7
Регистрация: 22-02-14
Пользователь №: 80 642



Цитата(Serb1987 @ Feb 19 2014, 13:00) *
Добрый день, есть борда с циклоном 5 на борту, нужно получить доступ к памяти, но на этой борде память расположена со стороны процессорного модуля (HPS), а получить доступ нужно из логики, подскажите пожалуйста как лучше поступить или откуда копать необходимую инфу?



Из FPGA можно получить доступ к SDRAM через специальный мост FPGA2SDRAM он отпирается в Qsys в окне настройки HPS
Go to the top of the page
 
+Quote Post
Serb1987
сообщение Feb 23 2014, 09:35
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 12-11-12
Пользователь №: 74 345



Спасибо, и далее нужно писать свой кусок Авалон-ММ мастер, я правильно понимаю?
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Feb 24 2014, 12:16
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 Serb1987
правильно,
и мне помнится там надо ещё в HPS армом снять ресет с этого порта.
Go to the top of the page
 
+Quote Post
Serb1987
сообщение Feb 24 2014, 12:28
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 12-11-12
Пользователь №: 74 345



Благодарю, у меня еще вопрос, у меня есть проект который написан на VHDL в Quartus, но мне нужно получить доступ к DDR3 на стороне HPS, как мне поступить, работать в Qsys и влепить туда проект из Quartus или наоборот? Пробовал последний вариант но не знаю как подключить ноги физической памяти к сигналам mem_*.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Feb 24 2014, 14:11
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 Serb1987
вырезать DDR3, а вместо него засандалить HPS.
То есть пересобрать его в Qsys а вместо DDR3 поставить HPS. Ну и не забыть что надо будет какой то простецкий код в арм залить wink.gif
А на счтё подключения ног - это вам быстрее в мануале или юзер-гиде почитать как простые примерчики собираются на вашу борду.
Go to the top of the page
 
+Quote Post
Serb1987
сообщение Jun 2 2014, 02:49
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 12-11-12
Пользователь №: 74 345



Добрый день, пока толкового ничего не нашел, поэтому прошу помощи у комьюнити, при подключении DDR3 как описано выше, запустил скрипт *pin_assignments.tcl, но после компиляции все равно есть ошибки о неподключенных пинах внешней памяти, и нет возможности ее подключить в пин планнере, как быть?
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jun 2 2014, 02:59
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 Serb1987
Так у вас DDR3 где - в HS или в PL?
Go to the top of the page
 
+Quote Post
Serb1987
сообщение Jun 2 2014, 03:13
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 12-11-12
Пользователь №: 74 345



DDR3 на стороне HPS, а нужно получить доступ со стороны FPGA, мосты FPGA2HPS сконфигурил, подключил memory controller в виде IP (*.qip) в проекте Квартуса, даже компилится но говорит "Critical Warning (169085): No exact pin location assignment(s) for 150 pins of 152 total pins" то есть не видит пинов ног которые нужно подклюсить к физической памяти

Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jun 2 2014, 05:25
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 Serb1987
Если у вас DDR3 на стороне HS, значит там оно само все лапы назначит, у него жёсткая привязка по ногам для DDR и её делает сам квартус на основании информации о чипе.
Скрипт нужен только для того чтобы внутренние констрейны правильно задать, типа:
Код
...
set_instance_assignment -name PACKAGE_SKEW_COMPENSATION OFF -to memory_mem_a[0] -tag __hps_sdram_p0
...
set_instance_assignment -name PLL_COMPENSATION_MODE DIRECT -to hps_system_1|hps_0|hps_io|border|hps_sdram_inst|pll0|fbout -tag __hps_sdram_p0
...
Go to the top of the page
 
+Quote Post
Serb1987
сообщение Jun 2 2014, 05:28
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 12-11-12
Пользователь №: 74 345



тоесть на критикал ворнинги можно не смотреть, мол ноги не подключены и все такое?

Вопрос вдогонку, может я вообще не правильно понял, установив IP(DDR3.qip) модуль как отдельный компонент проекта, из которого торчат ноги для физического подключения памяти и ноги для F2H моста, то ноги для памяти я вывожу как интерфейс всего проекта, а F2H ноги использую как внутренние для авалон протокола, верно?

Сообщение отредактировал Serb1987 - Jun 2 2014, 05:36
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jun 2 2014, 05:55
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



Цитата(Serb1987 @ Jun 2 2014, 11:38) *
тоесть на критикал ворнинги можно не смотреть, мол ноги не подключены и все такое?

нет, если есть неподключенные ноги, значит надо разбираться.

касательно
Цитата(Serb1987 @ Jun 2 2014, 11:38) *
..Вопрос вдогонку...

У вас есть ваша Qsys система, в ней есть ваши PL модули и PS система, в PS системе есть компонент SDRAM. Ну и дальше..
Смотрите скриншот:
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
Serb1987
сообщение Jun 2 2014, 06:49
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 12-11-12
Пользователь №: 74 345



В Qsys уже все настроено и создан IP компонент, который потом вставлен в quartus как отдельный компонент.


entity TVS is
-- generic (
-- );
Port (clk : in STD_LOGIC;

DDR3_mem_a : out std_logic_vector(14 downto 0); -- mem_a
DDR3_mem_ba : out std_logic_vector(2 downto 0); -- mem_ba
DDR3_mem_ck : out std_logic; -- mem_ck
DDR3_mem_ck_n : out std_logic; -- mem_ck_n
DDR3_mem_cke : out std_logic; -- mem_cke
DDR3_mem_cs_n : out std_logic; -- mem_cs_n
DDR3_mem_ras_n : out std_logic; -- mem_ras_n
DDR3_mem_cas_n : out std_logic; -- mem_cas_n
DDR3_mem_we_n : out std_logic; -- mem_we_n
DDR3_mem_reset_n : out std_logic; -- mem_reset_n
DDR3_mem_dq : inout std_logic_vector(31 downto 0) := (others => 'X'); -- mem_dq
DDR3_mem_dqs : inout std_logic_vector(3 downto 0) := (others => 'X'); -- mem_dqs
DDR3_mem_dqs_n : inout std_logic_vector(3 downto 0) := (others => 'X'); -- mem_dqs_n
DDR3_mem_odt : out std_logic; -- mem_odt
DDR3_mem_dm : out std_logic_vector(3 downto 0); -- mem_dm
DDR3_oct_rzqin : in std_logic := 'X' -- oct_rzqin
);
end TVS;

architecture Behavioral of TVS is

component ddr3_controller is
port (
memory_mem_a : out std_logic_vector(14 downto 0); -- mem_a
memory_mem_ba : out std_logic_vector(2 downto 0); -- mem_ba
memory_mem_ck : out std_logic; -- mem_ck
memory_mem_ck_n : out std_logic; -- mem_ck_n
memory_mem_cke : out std_logic; -- mem_cke
memory_mem_cs_n : out std_logic; -- mem_cs_n
memory_mem_ras_n : out std_logic; -- mem_ras_n
memory_mem_cas_n : out std_logic; -- mem_cas_n
memory_mem_we_n : out std_logic; -- mem_we_n
memory_mem_reset_n : out std_logic; -- mem_reset_n
memory_mem_dq : inout std_logic_vector(31 downto 0) := (others => 'X'); -- mem_dq
memory_mem_dqs : inout std_logic_vector(3 downto 0) := (others => 'X'); -- mem_dqs
memory_mem_dqs_n : inout std_logic_vector(3 downto 0) := (others => 'X'); -- mem_dqs_n
memory_mem_odt : out std_logic; -- mem_odt
memory_mem_dm : out std_logic_vector(3 downto 0); -- mem_dm
memory_oct_rzqin : in std_logic := 'X'; -- oct_rzqin
hps_0_f2h_sdram0_data_address : in std_logic_vector(29 downto 0) := (others => 'X'); -- address
hps_0_f2h_sdram0_data_burstcount : in std_logic_vector(7 downto 0) := (others => 'X'); -- burstcount
hps_0_f2h_sdram0_data_waitrequest : out std_logic; -- waitrequest
hps_0_f2h_sdram0_data_writedata : in std_logic_vector(31 downto 0) := (others => 'X'); -- writedata
hps_0_f2h_sdram0_data_byteenable : in std_logic_vector(3 downto 0) := (others => 'X'); -- byteenable
hps_0_f2h_sdram0_data_write : in std_logic := 'X'; -- write
reset_bridge_0_out_reset_reset : out std_logic; -- reset
clock_bridge_0_in_clk_clk : in std_logic := 'X' -- clk
);
end component ddr3_controller;

begin

u0 : component ddr3_controller
port map (
--clk_clk => DDR3_clk, -- clk.clk
--reset_reset_n => DDR3_reset_reset_n, -- reset.reset_n
memory_mem_a => DDR3_mem_a, -- memory.mem_a
memory_mem_ba => DDR3_mem_ba, -- .mem_ba
memory_mem_ck => DDR3_mem_ck, -- .mem_ck
memory_mem_ck_n => DDR3_mem_ck_n, -- .mem_ck_n
memory_mem_cke => DDR3_mem_cke, -- .mem_cke
memory_mem_cs_n => DDR3_mem_cs_n, -- .mem_cs_n
memory_mem_ras_n => DDR3_mem_ras_n, -- .mem_ras_n
memory_mem_cas_n => DDR3_mem_cas_n, -- .mem_cas_n
memory_mem_we_n => DDR3_mem_we_n, -- .mem_we_n
memory_mem_reset_n => DDR3_mem_reset_n, -- .mem_reset_n
memory_mem_dq => DDR3_mem_dq, -- .mem_dq
memory_mem_dqs => DDR3_mem_dqs, -- .mem_dqs
memory_mem_dqs_n => DDR3_mem_dqs_n, -- .mem_dqs_n
memory_mem_odt => DDR3_mem_odt, -- .mem_odt
memory_mem_dm => DDR3_mem_dm, -- .mem_dm
memory_oct_rzqin => DDR3_oct_rzqin -- .oct_rzqin
-- hps_0_f2h_sdram0_data_address => CONNECTED_TO_hps_0_f2h_sdram0_data_address, -- hps_0_f2h_sdram0_data.address
-- hps_0_f2h_sdram0_data_burstcount => CONNECTED_TO_hps_0_f2h_sdram0_data_burstcount, -- .burstcount
-- hps_0_f2h_sdram0_data_waitrequest => CONNECTED_TO_hps_0_f2h_sdram0_data_waitrequest, -- .waitrequest
-- hps_0_f2h_sdram0_data_writedata => CONNECTED_TO_hps_0_f2h_sdram0_data_writedata, -- .writedata
-- hps_0_f2h_sdram0_data_byteenable => CONNECTED_TO_hps_0_f2h_sdram0_data_byteenable, -- .byteenable
-- hps_0_f2h_sdram0_data_write => CONNECTED_TO_hps_0_f2h_sdram0_data_write, -- .write
-- reset_bridge_0_out_reset_reset => CONNECTED_TO_reset_bridge_0_out_reset_reset, -- reset_bridge_0_out_reset.reset
-- clock_bridge_0_in_clk_clk => CONNECTED_TO_clock_bridge_0_in_clk_clk -- clock_bridge_0_in_clk.clk
);
.....
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jun 2 2014, 07:32
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 Serb1987
Тогда проект в студию, надо смотреть на логи..
Go to the top of the page
 
+Quote Post

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

 


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


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