|
Создание компонета для SOPC Builder с несколькими регистрами ввода/вывода |
|
|
|
Jul 25 2012, 06:23
|
Местный
  
Группа: Свой
Сообщений: 222
Регистрация: 2-12-06
Из: г. Хабаровск
Пользователь №: 23 035

|
Здравствуйте! Простая по идее задача - хочу созадать свой компонент I2C для SOPC с возможностью конфигурирования его через внутренние регистры компонента (да хотя бы флаг RUN реализовать  ). Как это сделать? Нашел на сайте Altera пример Memory Mapped Slave. В этом шаблоне у устройства задается использование 16 внутренних регистров. Но там мощный шаблон, на 700 сток кода. Я аж испугался  А мне кажется можно это все сделать проще. Ведь всего лишь нужно вытянуть из SOPC информацию о том, по какому адресу он разместил внутренние регистры устройства, ну и сделать их программно доступными конечо с шины Avalon. Примеров других пока не разбирал. Но мне кажется моя задача должна встречаться у всех разработчиков периферии под процессор для FPGA. Товарищ показал код для Xilinx MicroBlaze в аналогичной ситуации. Там, как и в примере Altera в описании компонента применяется специальная нотация. Смотрел IP-core I2C от Terasic. Там, как я понял используется несколько отдельных регистров ввода-вывода, то есть устройство состоит из нескольких устройств на шине Авалон. Видимо это вообще самое простое решение. Но ведь как-то некрасиво?..
--------------------
|
|
|
|
|
 |
Ответов
|
Aug 20 2012, 17:27
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Цитата(Копейкин @ Aug 20 2012, 19:51)  Вы имеете в виду, что сигналы avs_s0_read_n & avs_s0_chipselect всегда в активном состоянии? Если так, то это неправильно. Может создать простой проект без SD и Ethernet контроллеров и отладить память? Я поторопился. По поводу активации надо будет еще проверить. CD уберу. Ethernet не мешает. Цитата У Вас TimeQuest при компиляции не говорит: "Timing requirements not met."? С этим все впорядке. Код Функции RAMTEST_INIT и SD_CONTROLLER_INIT создаются разработчиком компонентов и относятся к драйверам компонента (каталоги ..\ip\DevName\HAL\inc , ..\ip\DevName\HAL\src) Их наличие или отсутствие задаётся в devname_sw.tcl. Про это есть есть отдельные главы (создание компонентов и драйверов) в документации NiosII Software Developer's Handbook \ Section2 \ SubChapter7 "Developing Device Driver for HAL". Спасибо. Все понятно. Значит перед компиляцией можно закомментить даже в sd_controller_sw.tcl и др. Типа: Код # Initialize the driver in alt_sys_init() # set_sw_property auto_initialize true Попробую упростить компонент и проект...
Сообщение отредактировал Acvarif - Aug 20 2012, 17:29
|
|
|
|
|
Aug 21 2012, 08:07
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Вроде получилось. Для того, чтобы пронаблюдать на осцилляторе сигналы чтения avs_s0_read_n, avs_s0_chipselect пришлось их просто затянуть, примерно так CODE process(clk) begin if (falling_edge(clk)) then if(avs_s0_read_n = '0') then avs_s0_read_n_ext_reg <= '0'; avs_s0_read_n_ext_fl <= '1'; end if; if(avs_s0_read_n_ext_fl = '1') then avs_s0_read_n_ext_cnt <= avs_s0_read_n_ext_cnt + 1; end if; if(avs_s0_read_n_ext_cnt = "11111111") then avs_s0_read_n_ext_fl <= '0'; avs_s0_read_n_ext_reg <= '1'; end if; if(avs_s0_chipselect = '1') then avs_s0_chipselect_ext_reg <= '1'; avs_s0_chipselect_ext_fl <= '1'; end if; if(avs_s0_chipselect_ext_fl = '1') then avs_s0_chipselect_ext_cnt <= avs_s0_chipselect_ext_cnt + 1; end if; if(avs_s0_read_n_ext_cnt = "11111111") then avs_s0_chipselect_ext_fl <= '0'; avs_s0_chipselect_ext_reg <= '0'; end if; end if; end process;
-- внешний контроль сигналов avs_s0_read_n_ext <= avs_s0_read_n_ext_reg; avs_s0_chipselect_ext <= avs_s0_chipselect_ext_reg; При этом IORD и IORD_32DIRECT внешне (по сигналам avs_s0_read_n, avs_s0_chipselect) работают одинаково Теперь остается прописать нормальный механизм чтения данных на Avalon MM Slave из пользовательской двухпортовой памяти . Можно в нескольких словах, как организовать механизм чтения по прерыванию от пользовательской логики?
|
|
|
|
Сообщений в этой теме
altlogic Создание компонета для SOPC Builder с несколькими регистрами ввода/вывода Jul 25 2012, 06:23 Konst_777 Цитата(altlogic @ Jul 25 2012, 09:23) ...... Jul 25 2012, 17:41 altlogic Спасибо, буду иметь ввиду. Надо поковырять этот мо... Jul 26 2012, 02:05 barabek Цитата(altlogic @ Jul 26 2012, 12:05) Спа... Jul 29 2012, 22:32 Orochi Я учился работать с регистрами анализируя код этог... Jul 30 2012, 20:00 Acvarif Цитата(Orochi @ Jul 30 2012, 23:00) Я учи... Aug 13 2012, 13:41 Копейкин Сигналы, идущие наружу должны иметь тип интерфейса... Aug 13 2012, 16:40 Orochi Вот как подключен этот этот компонент у меня. aval... Aug 13 2012, 17:15 Acvarif Цитата(Orochi @ Aug 13 2012, 20:15) Вот к... Aug 14 2012, 07:05 Копейкин Deprecated-параметрами не следует пользоваться.
Эт... Aug 14 2012, 08:53 Acvarif Создал компонент Avalon MM Slave с пользовательско... Aug 17 2012, 06:44 Копейкин Я не силён в VHDL, пишу на Verilog, но
1) Выходной... Aug 17 2012, 08:00 Acvarif Спасибо. Попробую разобраться.
Если примитивно то... Aug 17 2012, 08:29 Копейкин Для чтения/записи отдельного байта следует использ... Aug 20 2012, 09:18 Acvarif Цитата(Копейкин @ Aug 20 2012, 12:18) Для... Aug 20 2012, 10:48 Копейкин Макро IORD(base, n) применяется при адресации типа... Aug 20 2012, 11:48 Acvarif Цитата(Копейкин @ Aug 20 2012, 14:48) Мак... Aug 20 2012, 12:35 Копейкин Вы должны увидеть активацию сигналов
avs_s0_read_... Aug 20 2012, 13:36 Acvarif Цитата(Копейкин @ Aug 20 2012, 16:36) Вы ... Aug 20 2012, 14:04 Копейкин Добавляете интерфейс Interrupt sender.
У Вас добав... Aug 21 2012, 10:35 Acvarif Цитата(Копейкин @ Aug 21 2012, 13:35) Доб... Aug 21 2012, 11:10  Acvarif Почитал немного букварь "Avalon Interface Spe... Aug 22 2012, 10:13 Копейкин Предупреждение предупреждает (о как), что устройст... Aug 22 2012, 13:31 Acvarif Цитата(Копейкин @ Aug 22 2012, 16:31) Пре... Aug 22 2012, 14:13 Копейкин Нет, автоматом не сбрасывается.
Ты должен иметь св... Aug 22 2012, 15:24 Acvarif Цитата(Копейкин @ Aug 22 2012, 18:24) Нет... Aug 23 2012, 06:30 Копейкин У меня примера под рукой нет, но когда разбирался,... Aug 23 2012, 09:05 Acvarif Цитата(Копейкин @ Aug 23 2012, 12:05) У м... Aug 23 2012, 10:18  barabek Цитата(Acvarif @ Aug 23 2012, 20:18) Спас... Aug 23 2012, 22:19   Acvarif Цитата(barabek @ Aug 24 2012, 01:19) По д... Aug 24 2012, 08:07 Копейкин Импульс небольшой длительности не гарантирует сраб... Aug 23 2012, 13:32
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|