|
|
  |
Внешнее програмирование флеш. |
|
|
|
May 16 2017, 09:00
|
Профессионал
    
Группа: Участник
Сообщений: 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. Может кто нибудь работал с этим модулем?
|
|
|
|
|
May 16 2017, 09:03
|

я только учусь...
     
Группа: Модераторы
Сообщений: 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.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
May 16 2017, 09:27
|

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

|
Цитата(Jenya7 @ May 16 2017, 13:21)  я изучал этот документ. он расчитан на крутых перцев, искушенных в этом коре. Авалон MM - очень простой интерфейс, даже начинающий без труда его должен понять. Так что вникайте. В этом компоненте два таких интерфейса - один простой, видимо, для команд, второй посложнее, с поддержкой пакетной передачи - для данных. ЗЫ: с verilog решили не иметь дела, а только архаичный vhdl?
|
|
|
|
|
May 16 2017, 09:33
|
Профессионал
    
Группа: Участник
Сообщений: 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
|
|
|
|
|
May 16 2017, 09:52
|

Любитель
    
Группа: Свой
Сообщений: 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. Доки - это ваше все. И уже потом спрашивайте на форуме, что не понятно.
|
|
|
|
|
May 16 2017, 11:38
|
Участник

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

|
При настройке IP-Core (Altera On-Chip Memory) у вас должна быть таблица с адресами и типом памяти (UFM, CFM). Надо просто в ней в Access mode для CFM поставить write and read и тогда она должна быть доступна для записи и чтения. (Железа с MAX10 нету чтобы проверить как это будет работать).
|
|
|
|
|
May 16 2017, 11:45
|
Профессионал
    
Группа: Участник
Сообщений: 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.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|