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

 
 
> Avalon Master + SDRAM controller, Подключение и моделирование SDRAM контроллера
Alex-IFMO
сообщение May 1 2012, 10:16
Сообщение #1





Группа: Новичок
Сообщений: 6
Регистрация: 27-04-12
Пользователь №: 71 600



Добрый день.

Имеется в наличии борда от терасика DE2-115 (http://www.terasic.com.tw/cgi-bin/page/archive.pl?No=502).
Пытаюсь на ней поднять SDRAM через SOPC. Для этого создаю в SOPC новый мастер компонент в таком виде:



Добавляю SDRAM controller с параметрами:



Получаю в SOPC такую систему:



Генерирую без проблем и подключаю ее в основном модуле. Далее описал небольшое взаимодействие между SWITCH, LED и SDRAM. А именно, по действию первого свитча записать в SDRAM на заданный адрес определенное значение, по действию второго свитча считать это значение и вывести на LED.
В результате получается не совсем то, что я ожидал. По действию первого свитча происходит и запись, и считывание. И я никак не могу разобраться в чем проблема.
Пробовал промоделировать систему в моделсиме, но в ней не получается добиться хоть какой-нибудь реакции на выходы SDRAM от авалоноского мастера.
Как правильно собирать и моделировать системы с авалоновским мастером?
Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Alex-IFMO
сообщение May 2 2012, 07:58
Сообщение #2





Группа: Новичок
Сообщений: 6
Регистрация: 27-04-12
Пользователь №: 71 600



Собственное ничего сложного нет. Две пары свитчей для чтения и записи разных данных с разных адресов.

CODE

reg [31:0] av_address;
reg [31:0] av_wr_data;
reg av_write;
reg av_read;
reg av_wait_req;


assign DRAM_CLK = CLOCK_50;

//=======================================================
// Structural coding
//=======================================================

my_sdram (
// 1) global signals:
.clk_0(CLOCK_50),
.clk_0_reset(),
.reset_n(KEY[0]),

// the_my_master_0_avalon_master
.address_from_the_my_master_0(av_address),
.rd_data_to_the_my_master_0(LEDG),
.rd_data_valid_to_the_my_master_0(),
.read_from_the_my_master_0(av_read),
.wait_req_to_the_my_master_0(av_wait_req),
.wr_data_from_the_my_master_0(av_wr_data),
.write_from_the_my_master_0(av_write),

// the_sdram_0
.zs_addr_from_the_sdram_0(DRAM_ADDR),
.zs_ba_from_the_sdram_0(DRAM_BA),
.zs_cas_n_from_the_sdram_0(DRAM_CAS_N),
.zs_cke_from_the_sdram_0(DRAM_CKE),
.zs_cs_n_from_the_sdram_0(DRAM_CS_N),
.zs_dq_to_and_from_the_sdram_0(DRAM_DQ),
.zs_dqm_from_the_sdram_0(DRAM_DQM),
.zs_ras_n_from_the_sdram_0(DRAM_RAS_N),
.zs_we_n_from_the_sdram_0(DRAM_WE_N)
)
;

////////////////////////////

always @(posedge CLOCK_50)begin
if(SW[0]) begin
av_address = 32'd115;
av_wr_data = 32'd15;
av_write = 1'b1;
av_read = 1'b0;
end

if(SW[1]) begin
av_address = 32'd215;
av_wr_data = 32'd240;
av_write = 1'b1;
av_read = 1'b0;
end

if(SW[5]) begin
av_address = 32'd115;
av_write = 1'b0;
av_read = 1'b1;
end

if(SW[6]) begin
av_address = 32'd215;
av_write = 1'b0;
av_read = 1'b1;
end

end

Вот, что получается на выходе по действию SW[0]:



На rd_data появляется значение, хотя происходит операция записи.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 02:40
Рейтинг@Mail.ru


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