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

 
 
 
Reply to this topicStart new topic
> Внешнее програмирование флеш.
Jenya7
сообщение May 16 2017, 09:00
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Я подключил к проекту Altera On-Chip Flash и он создал мне компонент
Код
component flash_update is
        port (
            clock                   : in  std_logic                     := 'X';             -- clk
            avmm_csr_addr           : in  std_logic                     := 'X';             -- address
            avmm_csr_read           : in  std_logic                     := 'X';             -- read
            avmm_csr_writedata      : in  std_logic_vector(31 downto 0) := (others => 'X'); -- writedata
            avmm_csr_write          : in  std_logic                     := 'X';             -- write
            avmm_csr_readdata       : out std_logic_vector(31 downto 0);                    -- readdata
            avmm_data_addr          : in  std_logic_vector(18 downto 0) := (others => 'X'); -- address
            avmm_data_read          : in  std_logic                     := 'X';             -- read
            avmm_data_writedata     : in  std_logic_vector(31 downto 0) := (others => 'X'); -- writedata
            avmm_data_write         : in  std_logic                     := 'X';             -- write
            avmm_data_readdata      : out std_logic_vector(31 downto 0);                    -- readdata
            avmm_data_waitrequest   : out std_logic;                                        -- waitrequest
            avmm_data_readdatavalid : out std_logic;                                        -- readdatavalid
            avmm_data_burstcount    : in  std_logic_vector(3 downto 0)  := (others => 'X'); -- burstcount
            reset_n                 : in  std_logic                     := 'X'              -- reset_n
        );
    end component flash_update;

    u0 : component flash_update
        port map (
            clock                   => CONNECTED_TO_clock,                   --    clk.clk
            avmm_csr_addr           => CONNECTED_TO_avmm_csr_addr,           --    csr.address
            avmm_csr_read           => CONNECTED_TO_avmm_csr_read,           --       .read
            avmm_csr_writedata      => CONNECTED_TO_avmm_csr_writedata,      --       .writedata
            avmm_csr_write          => CONNECTED_TO_avmm_csr_write,          --       .write
            avmm_csr_readdata       => CONNECTED_TO_avmm_csr_readdata,       --       .readdata
            avmm_data_addr          => CONNECTED_TO_avmm_data_addr,          --   data.address
            avmm_data_read          => CONNECTED_TO_avmm_data_read,          --       .read
            avmm_data_writedata     => CONNECTED_TO_avmm_data_writedata,     --       .writedata
            avmm_data_write         => CONNECTED_TO_avmm_data_write,         --       .write
            avmm_data_readdata      => CONNECTED_TO_avmm_data_readdata,      --       .readdata
            avmm_data_waitrequest   => CONNECTED_TO_avmm_data_waitrequest,   --       .waitrequest
            avmm_data_readdatavalid => CONNECTED_TO_avmm_data_readdatavalid, --       .readdatavalid
            avmm_data_burstcount    => CONNECTED_TO_avmm_data_burstcount,    --       .burstcount
            reset_n                 => CONNECTED_TO_reset_n                  -- nreset.reset_n
        );

Вопрос как мне работать с ним. Я хочу по UART програмировать CFM на MAX10. Может кто нибудь работал с этим модулем?
Go to the top of the page
 
+Quote Post
Maverick
сообщение May 16 2017, 09:03
Сообщение #2


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(Jenya7 @ May 16 2017, 12:00) *
Я подключил к проекту Altera On-Chip Flash и он создал мне компонент
Код
component flash_update is
        port (
            clock                   : in  std_logic                     := 'X';             -- clk
            avmm_csr_addr           : in  std_logic                     := 'X';             -- address
            avmm_csr_read           : in  std_logic                     := 'X';             -- read
            avmm_csr_writedata      : in  std_logic_vector(31 downto 0) := (others => 'X'); -- writedata
            avmm_csr_write          : in  std_logic                     := 'X';             -- write
            avmm_csr_readdata       : out std_logic_vector(31 downto 0);                    -- readdata
            avmm_data_addr          : in  std_logic_vector(18 downto 0) := (others => 'X'); -- address
            avmm_data_read          : in  std_logic                     := 'X';             -- read
            avmm_data_writedata     : in  std_logic_vector(31 downto 0) := (others => 'X'); -- writedata
            avmm_data_write         : in  std_logic                     := 'X';             -- write
            avmm_data_readdata      : out std_logic_vector(31 downto 0);                    -- readdata
            avmm_data_waitrequest   : out std_logic;                                        -- waitrequest
            avmm_data_readdatavalid : out std_logic;                                        -- readdatavalid
            avmm_data_burstcount    : in  std_logic_vector(3 downto 0)  := (others => 'X'); -- burstcount
            reset_n                 : in  std_logic                     := 'X'              -- reset_n
        );
    end component flash_update;

    u0 : component flash_update
        port map (
            clock                   => CONNECTED_TO_clock,                   --    clk.clk
            avmm_csr_addr           => CONNECTED_TO_avmm_csr_addr,           --    csr.address
            avmm_csr_read           => CONNECTED_TO_avmm_csr_read,           --       .read
            avmm_csr_writedata      => CONNECTED_TO_avmm_csr_writedata,      --       .writedata
            avmm_csr_write          => CONNECTED_TO_avmm_csr_write,          --       .write
            avmm_csr_readdata       => CONNECTED_TO_avmm_csr_readdata,       --       .readdata
            avmm_data_addr          => CONNECTED_TO_avmm_data_addr,          --   data.address
            avmm_data_read          => CONNECTED_TO_avmm_data_read,          --       .read
            avmm_data_writedata     => CONNECTED_TO_avmm_data_writedata,     --       .writedata
            avmm_data_write         => CONNECTED_TO_avmm_data_write,         --       .write
            avmm_data_readdata      => CONNECTED_TO_avmm_data_readdata,      --       .readdata
            avmm_data_waitrequest   => CONNECTED_TO_avmm_data_waitrequest,   --       .waitrequest
            avmm_data_readdatavalid => CONNECTED_TO_avmm_data_readdatavalid, --       .readdatavalid
            avmm_data_burstcount    => CONNECTED_TO_avmm_data_burstcount,    --       .burstcount
            reset_n                 => CONNECTED_TO_reset_n                  -- nreset.reset_n
        );

Вопрос как мне работать с ним. Я хочу по UART програмировать CFM на MAX10. Может кто нибудь работал с этим модулем?

Avalon MM


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Jenya7
сообщение May 16 2017, 09:21
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(Maverick @ May 16 2017, 14:03) *

я изучал этот документ. он расчитан на крутых перцев, искушенных в этом коре.
Go to the top of the page
 
+Quote Post
sonycman
сообщение May 16 2017, 09:27
Сообщение #4


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Jenya7 @ May 16 2017, 13:21) *
я изучал этот документ. он расчитан на крутых перцев, искушенных в этом коре.

Авалон MM - очень простой интерфейс, даже начинающий без труда его должен понять.
Так что вникайте.

В этом компоненте два таких интерфейса - один простой, видимо, для команд, второй посложнее, с поддержкой пакетной передачи - для данных.

ЗЫ: с verilog решили не иметь дела, а только архаичный vhdl?
Go to the top of the page
 
+Quote Post
Jenya7
сообщение May 16 2017, 09:33
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(sonycman @ May 16 2017, 14:27) *
Авалон MM - очень простой интерфейс, даже начинающий без труда его должен понять.
Так что вникайте.

В этом компоненте два таких интерфейса - один простой, видимо, для команд, второй посложнее, с поддержкой пакетной передачи - для данных.

ЗЫ: с verilog решили не иметь дела, а только архаичный vhdl?

нет времени изучать верилог, многое уже написано на вхдл.
а почему два сигнала. какой когда использовать?
Код
avmm_csr_addr
avmm_csr_read

avmm_data_addr
avmm_data_read

то есть, что значит csr?

Сообщение отредактировал Jenya7 - May 16 2017, 09:34
Go to the top of the page
 
+Quote Post
sonycman
сообщение May 16 2017, 09:52
Сообщение #6


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Jenya7 @ May 16 2017, 13:33) *
а почему два сигнала. какой когда использовать?
то есть, что значит csr?

Это Control and Status Register.
Читайте сначала доки на компонент флэш памяти MAX 10 User Flash Memory User Guide (ug-m10-ufm-16.0.pdf).
Потом - на Avalon MM.
Доки - это ваше все.

И уже потом спрашивайте на форуме, что не понятно.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение May 16 2017, 10:30
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(sonycman @ May 16 2017, 14:52) *
Это Control and Status Register.
Читайте сначала доки на компонент флэш памяти MAX 10 User Flash Memory User Guide (ug-m10-ufm-16.0.pdf).
Потом - на Avalon MM.
Доки - это ваше все.

И уже потом спрашивайте на форуме, что не понятно.

Так тут как раз таки непонятно. Они в документе говорят о UFM. А мне надо програмировать CFM.
Go to the top of the page
 
+Quote Post
Don Eugenio
сообщение May 16 2017, 11:38
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 2-08-16
Пользователь №: 92 805



При настройке IP-Core (Altera On-Chip Memory) у вас должна быть таблица с адресами и типом памяти (UFM, CFM). Надо просто в ней в Access mode для CFM поставить write and read и тогда она должна быть доступна для записи и чтения. (Железа с MAX10 нету чтобы проверить как это будет работать).
Go to the top of the page
 
+Quote Post
Jenya7
сообщение May 16 2017, 11:45
Сообщение #9


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(Don Eugenio @ May 16 2017, 16:38) *
При настройке IP-Core (Altera On-Chip Memory) у вас должна быть таблица с адресами и типом памяти (UFM, CFM). Надо просто в ней в Access mode для CFM поставить write and read и тогда она должна быть доступна для записи и чтения. (Железа с MAX10 нету чтобы проверить как это будет работать).

понял. а потом генерики наверно надо изменить на начало и старт CFM
Код
onchip_flash_0 : component altera_onchip_flash
    generic map (
    INIT_FILENAME                       => "",
    INIT_FILENAME_SIM                   => "",
    DEVICE_FAMILY                       => "MAX 10",
    PART_NAME                           => "10M50SAE144I7G",
    DEVICE_ID                           => "50",
    SECTOR1_START_ADDR                  => 0,
    SECTOR1_END_ADDR                    => 8191,
    SECTOR2_START_ADDR                  => 8192,
    SECTOR2_END_ADDR                    => 16383,
    SECTOR3_START_ADDR                  => 16384,
    SECTOR3_END_ADDR                    => 114687,
    SECTOR4_START_ADDR                  => 114688,
    SECTOR4_END_ADDR                    => 188415,
    SECTOR5_START_ADDR                  => 188416,
    SECTOR5_END_ADDR                    => 360447,
    MIN_VALID_ADDR                      => 0,
    MAX_VALID_ADDR                      => 360447,
    MIN_UFM_VALID_ADDR                  => 0,
    MAX_UFM_VALID_ADDR                  => 114687,
    SECTOR1_MAP                         => 1,
    SECTOR2_MAP                         => 2,
    SECTOR3_MAP                         => 3,
    SECTOR4_MAP                         => 4,
    SECTOR5_MAP                         => 5,
    ADDR_RANGE1_END_ADDR                => 360447,
    ADDR_RANGE1_OFFSET                  => 2048,
    ADDR_RANGE2_OFFSET                  => 0,
    AVMM_DATA_ADDR_WIDTH                => 19,
    AVMM_DATA_DATA_WIDTH                => 32,
    AVMM_DATA_BURSTCOUNT_WIDTH          => 4,
    SECTOR_READ_PROTECTION_MODE         => 4,
    FLASH_SEQ_READ_DATA_COUNT           => 4,
    FLASH_ADDR_ALIGNMENT_BITS           => 2,
    FLASH_READ_CYCLE_MAX_INDEX          => 5,
    FLASH_RESET_CYCLE_MAX_INDEX         => 14,
    FLASH_BUSY_TIMEOUT_CYCLE_MAX_INDEX  => 72,
    FLASH_ERASE_TIMEOUT_CYCLE_MAX_INDEX => 21000000,
    FLASH_WRITE_TIMEOUT_CYCLE_MAX_INDEX => 18300,
    PARALLEL_MODE                       => true,
    READ_AND_WRITE_MODE                 => true,
    WRAPPING_BURST_MODE                 => false,
    IS_DUAL_BOOT                        => "False",
    IS_ERAM_SKIP                        => "True",
    IS_COMPRESSED_IMAGE                 => "False"

правда непонятно какие генерики относяться к UFM а какие к CFM.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st June 2025 - 20:19
Рейтинг@Mail.ru


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