Использовал стандартный SPI в поставке Q7.2.
Но он имеет фиксированую частоту.
А карточка в свою очередь требует при инициализации 100..400Кбит.
Соответственно после инициализации приходится работать на низкой скорости, что не приемлемо.
Решил создать свой.
В начале сгенерил verilog файл для SPI Q7.2 с помощью SOPC Builder.
Потом переместил в отдельный каталог.
Переименовал названия портов в соответствии с соглашениями - SOPC импортирует без вопросов.
На закладке Interfaces в Component Editor назначил тактирования и прерывания.
Файл "_hw.tcl" успешно сгенерился и в проект устройство добавилось(SOPC)
В SOPC адрес, уровень прерывания, тактирование успешно присоединяется и генерится система.
Вот часть лога.
Код
Info: vovka_spi_0: Starting generation of variation wrapper.
Info: vovka_spi_0: Analyzing D:\!Vedekon\Video\Quartus\vovka_spi\hdl\vovka_spi.v to ensure matching directions and widths for all ports.
Info: vovka_spi_0: Finished generation of variation wrapper.
Info: SVIDEO: Generating QIP file.
Info: vovka_spi_0: Analyzing D:\!Vedekon\Video\Quartus\vovka_spi\hdl\vovka_spi.v to ensure matching directions and widths for all ports.
Info: vovka_spi_0: Finished generation of variation wrapper.
Info: SVIDEO: Generating QIP file.
В файле "QIP" прописываются корректные пути(пробелы не использую)
При компиляции полного проекта в Quartus оказывается SOPC сгенерил связи для экземпляра
Код
vovka_spi_0 the_vovka_spi_0
(
.avs_s1_address (vovka_spi_0_s1_address),
.avs_s1_chipselect (vovka_spi_0_s1_chipselect),
.avs_s1_read (vovka_spi_0_s1_read),
.avs_s1_readdata (vovka_spi_0_s1_readdata),
.avs_s1_write (vovka_spi_0_s1_write),
.avs_s1_writedata (vovka_spi_0_s1_writedata),
.coe_MISO (coe_MISO_to_the_vovka_spi_0),
.cos_MOSI (cos_MOSI_from_the_vovka_spi_0),
.cos_SCLK (cos_SCLK_from_the_vovka_spi_0),
.cos_SS_n (cos_SS_n_from_the_vovka_spi_0),
.csi_clockreset_clk (clk),
.csi_clockreset_reset_n (vovka_spi_0_s1_reset_n),
.ins_irq0_irq (vovka_spi_0_s1_irq)
);
(
.avs_s1_address (vovka_spi_0_s1_address),
.avs_s1_chipselect (vovka_spi_0_s1_chipselect),
.avs_s1_read (vovka_spi_0_s1_read),
.avs_s1_readdata (vovka_spi_0_s1_readdata),
.avs_s1_write (vovka_spi_0_s1_write),
.avs_s1_writedata (vovka_spi_0_s1_writedata),
.coe_MISO (coe_MISO_to_the_vovka_spi_0),
.cos_MOSI (cos_MOSI_from_the_vovka_spi_0),
.cos_SCLK (cos_SCLK_from_the_vovka_spi_0),
.cos_SS_n (cos_SS_n_from_the_vovka_spi_0),
.csi_clockreset_clk (clk),
.csi_clockreset_reset_n (vovka_spi_0_s1_reset_n),
.ins_irq0_irq (vovka_spi_0_s1_irq)
);
А также указал имя файла для включения
Код
`include "vovka_spi_0.v"
Но сам файл не создал.
Я попробовал вручную подбросить файл(переименовав vovka_spi в vovka_spi_0 ).
Quartus проект собрал.
Проект после заливки не работает.
Не понятно также почему в SOPC Builder/Component Editor при работе в закладке Interfaces по этой закладке серые кубики и точки появляются(артефакты).
Такое впечетление, что этот модуль не дописан. То ли ошибка при инсталяции/распаковке какой нибудь dll произошла.
Сервис пак 3-ий стоит.
Перечитал документацию "SOPC Builder Component Development Walkthrough" и "Component Editor".
Не знаю как решать возникушую проблему?
Не понятно какой еще файл(ы) нужны?
Пробовал подсунуть подкорректированые "_sw.tcl" и соответствующие .h и .c - с наскоку не получилось :-(
Может есть ошибка и в verilog файле, но SOPC должен же корректно генерить систему?
Какую еще документацию почитать?