|
Снова мастер для SOPC, с HDL |
|
|
|
Apr 25 2008, 11:04
|

Гуру
     
Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359

|
Всем привет. Как-то я тут говорил, что можно в квартусе 7.2 сделать мастер без HDL, чтобы сигналы типа write_n, read_n транслировались к модулю верхнего уровня. Хм... может я ошибся, они почему-то не лезут наврх. Вот состряпал я тогда мастер на основе HDL файла, где эти сигналы транслируются на выход: Цитата module reader_mm ( avm_m0_address, avm_m0_read_n, avm_m0_readdata, avm_m0_readdatavalid, avm_m0_waitrequest, i_addr, i_r_n, o_rdata, o_rdatavalid, o_wait );
output [23:0] avm_m0_address; //это мастер output avm_m0_read_n; input [15:0] avm_m0_readdata; input avm_m0_readdatavalid; input avm_m0_waitrequest;
input [23:0] i_addr; //наружу input i_r_n; output [15:0] o_rdata; output o_rdatavalid; output o_wait;
assign avm_m0_address = i_addr; assign avm_m0_read_n = i_r_n; assign o_rdata = avm_m0_readdata; assign o_rdatavalid = avm_m0_readdatavalid; assign o_wait = avm_m0_waitrequest;
endmodule Подобный же для записи. И вот, собрал систему из такого модуля и on_chip памяти. Поглядел в симуляторе - читает. - Но, во-первых, когда стал использовать его для чтения DDR, увидел что чтение не пакетами, а слово, ожидание, слово, ожидание... Как ему указать чтобы читал пакетами (в арбитраже выставляю скажем 50)? - Во-вторых, я обратил внимание, что нету выбора глобального тактового. Не знаю нужен ли он, ведь тут только assign-ы. Или для генерируемой сопцом логики это необходимо - тогда как его задать? Не вкуриваю, напишите пожалуйста куда его в этом HDL прикрутить... Управление всеми сигналами идет по тактовому для памяти. Вот добавляю я gls_clk, который как следует из доки будет распознан как глобальный сигнал - редактор компонентов его все-равно как slave найдет... Он же глобальный, какой тут нахрен слейв?
--------------------
Быть. torizin-liteha@yandex.ru
|
|
|
|
|
 |
Ответов
(1 - 5)
|
Apr 28 2008, 18:50
|
Местный
  
Группа: Свой
Сообщений: 347
Регистрация: 16-02-06
Из: г.Николаев, Украина
Пользователь №: 14 377

|
Цитата(torik @ Apr 25 2008, 14:04)  Как-то я тут говорил, что можно в квартусе 7.2 сделать мастер без HDL, чтобы сигналы типа write_n, read_n транслировались к модулю верхнего уровня. Хм... может я ошибся, они почему-то не лезут наврх. Тема интересная, но не понятно, зачем это все делается... Почему мастер? Работаем с NiosII или без? Для slave port у меня, к примеру, такой заголовок (часть после второго комента для выхода в верхний модуль): module a_input_buf ( //Signals from Avalon-MM slave port csi_clockreset_clk, csi_clockreset_reset_n, avs_s1_address, avs_s1_chipselect_n, avs_s1_read_n, avs_s1_write_n, avs_s1_writedata, avs_s1_readdata, //Signals for input buf ADC-port data_in, stat_in, clk_in, bank_in, adr_out, , stat_out ); Все такты внутри этого модуля по csi_clockreset_clk, думаю, его через assign, можно вывести на верхний модуль.
|
|
|
|
|
Apr 29 2008, 04:49
|

Гуру
     
Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359

|
Ниос тоже имеется в системе... Мастер потому, что записью рулит внешнее устройство. Можно, наверное, и слейвом сделать, но мне так удобнее. В кратце - одно "внешенее устройство" записывает видео, два других читают (один читает само видео, другой - всякие кнопки и т.п.)... Вобщем, запустить запустил, тольк частоту на верхний уровень не выводил, она там и так быть. Теперь к пакетам. Память DDR, все делается на плате Nios II Embedded Evaluation Kit, Cyclone III Edition. Чтение/запись идет, такое впечатление, с латентностью 2. Это же не реально, зачем нужен такой контроллер памяти (в сопсбилдере который родной), тут явно что-то не то. Почему латентность 2, вот картинка с waitrequest приложена. Что здесь можно предположить - clock_bridge нужен?
Эскизы прикрепленных изображений
--------------------
Быть. torizin-liteha@yandex.ru
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|