Цитата(vadimuzzz @ May 15 2010, 02:00)

в исходном посте вы писали, что модуль будет зашивать память во время, когда процессор сброшен, а тут он у вас уже в SOPC`е объявился. у меня есть большие сомнения, что шина Avalon будет работать во время сброса. как я понимаю, модуль должен быть внешним по отношению к SOPC + мультиплексор.
К плису подключен микроконтроллер, который собственное его конфигурирует, и передает в него данные ("пакетами" 63 байта + 1 байт команда = 64).
При передаче организован командный режим, т.е. по команде от контроллера, процессор запускается. (Есть команда последовательной загрузки в память с инкрементированием адреса).
Загрузка орагнизована таким образом, шина Авалона для связи "загручика" и памяти не используется, немного основного кода
Код
module TopLevelModule (
OSC_40, // Clock 40 MHz
TransIO, // Output test 16bit port
iuC, // Шина для приема данных 8bit
iouC, // Вход тактирования шины
SRAM_Addr,
SRAM_Data,
SRAM_nOE,
SRAM_nWE
);
input OSC_40;
output [15:0] TransIO;
input [7:0] iuC;
input iouC;
wire processor_reset;
output [16:0] SRAM_Addr;
inout [7:0] SRAM_Data;
output SRAM_nOE;
output SRAM_nWE;
wire [16:0] mSRAM_Addr;
wire [7:0] mSRAM_Data;
wire mSRAM_nOE;
wire mSRAM_nWE;
wire [16:0] cpuSRAM_Addr;
wire [7:0] cpuSRAM_Data;
wire cpuSRAM_nOE;
wire cpuSRAM_nWE;
assign SRAM_Addr = (processor_reset ? cpuSRAM_Addr : mSRAM_Addr);
assign SRAM_Data = (processor_reset ? cpuSRAM_Data : mSRAM_Data);
assign SRAM_nOE = (processor_reset ? cpuSRAM_nOE : mSRAM_nOE);
assign SRAM_nWE = (processor_reset ? cpuSRAM_nWE : mSRAM_nWE);
mySoC u2 (
.clk_0(OSC_40), .reset_n(processor_reset),
.out_port_from_the_pio_0(TransIO[15:8]),
.new_component_0_s0_data(cpuSRAM_Data),
.HRW_Addr_from_the_new_component_0(cpuSRAM_Addr),
.HRW_nOE_from_the_new_component_0(cpuSRAM_nOE),
.HRW_nWE_from_the_new_component_0(cpuSRAM_nWE)
);
Bootloader u3 (
.OSC_40(OSC_40), .iuC(iuC), .iouC(iouC), .processor_reset(processor_reset),
.TransIO(TransIO[7:0]),
.SRAM_Addr(mSRAM_Addr),
.SRAM_Data(mSRAM_Data),
.SRAM_nOE(mSRAM_nOE),
.SRAM_nWE(mSRAM_nWE)
);
endmodule
Сбросом процессора Ниос управляет модуль Bootloader там находится этот регистр с начальным состоянием = 1'b0
Пробовал загружать во внешнюю память программу (модуль загрузки, проверил как мог дома, вроде как все загружается правильно, проверял текущий адрес мультиметром

, ни лог. анализатора, ни осциллографа нет, симулятором так и не успел научится пользоваться времени в обрез

диплом.., попробую еще помучатся в Университете если дома не получится )
Запустил как есть, такое ощущение что процессор просто гуляет по памяти(беспрерывно считывает, смотрел что за уровень на nOE) и толком ничего не делает, при этом нагревая память (возможно даже логическое КЗ, на ножках данных) и так промучившись уйму времени, так и не получилось запустить его с статической памяти.
В память SRAM загружаю простенькую программу (в адрес начиная с 0, по байтам, последовательно), которая "мигает" портом вывода, скомпилировал ее, преобразовал elf в flash формат (как уже выше писалось), преобразовал flash в бинарный формат своей программой на ПК, которая передает данные для конфигруации ПЛИС, и осуществляет связь с ПЛИС - загружает данные в SRAM. И командой запускал процессор.
Код
#include "altera_avalon_pio_regs.h"
#include "system.h"
int main()
{
int i;
while(1)
{
IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE,0xff);
for (i=0;i<20000000;i++);
IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE,0x00);
for (i=0;i<20000000;i++);
}
}
Думал уже может тут где-то ошибся, потом пересобрав процессор на On-chip memory RAM (с инициализацией памяти), установил вектора на нее и загрузив его в ПЛИС
убедился что программа работает, подключенный светодиод мигал (командный режим запуска процессора работает, сброс с процессора убирается)
Замтелил еще вот что, при настройке Tri-state bridge:
Нажмите для просмотра прикрепленного файлаОставлял так и генерировал процессор, потом ставил галочки везде и генерировал процестор, но на выходе получалось одно и тоже:
Код
module mySoC (
// 1) global signals:
clk_0,
new_component_0_s0_data,
reset_n,
// the_pio_0
out_port_from_the_pio_0,
// the_spi_0
MISO_to_the_spi_0,
MOSI_from_the_spi_0,
SCLK_from_the_spi_0,
SS_n_from_the_spi_0,
// the_spi_1
MISO_to_the_spi_1,
MOSI_from_the_spi_1,
SCLK_from_the_spi_1,
SS_n_from_the_spi_1
);
Я так понимаю с
new_component_0_s0_data должен был появится и *_adress, *_noe, *_nwe или я не прав, sopc builder издевается? (в хендбуках искал, так и ничего не понял)
Смотрел и тут на форуме посты и ссылку которую Вы давали посмотреть по подключению внешней памяти (
http://www.alteraforum.com/forum/showthread.php?t=6255 ), как правильно нужно создавать модуль для внешней памяти?