Worldmaster 0 11 августа, 2023 Опубликовано 11 августа, 2023 (изменено) · Жалоба Здравствуйте. Не знаю насколько это можно считать продолжением темы но задача уже не в ошибках. В общем Скачал мануалы, даже разобрался с примером на Verilog где показана работа с SDRAM. Сформировал корку для встроенной SDRAM. Генератор предлагает вот такой код: MySDRAM: SDRAM port map ( O_sdram_clk => O_sdram_clk_o, O_sdram_cke => O_sdram_cke_o, O_sdram_cs_n => O_sdram_cs_n_o, O_sdram_cas_n => O_sdram_cas_n_o, O_sdram_ras_n => O_sdram_ras_n_o, O_sdram_wen_n => O_sdram_wen_n_o, O_sdram_dqm => O_sdram_dqm_o, IO_sdram_dq => IO_sdram_dq_io, O_sdram_addr => O_sdram_addr_o, O_sdram_ba => O_sdram_ba_o, I_sdrc_clk => InClock_50, I_sdram_clk => InClock_50, O_sdrc_data => O_sdrc_data_o, I_sdrc_addr => I_sdrc_addr_i, I_sdrc_data => I_sdrc_data_i, I_sdrc_wr_n => I_sdrc_wr_n_i, I_sdrc_rd_n => I_sdrc_rd_n_i, I_sdrc_data_len => I_sdrc_data_len_i, I_sdrc_rst_n => I_sdrc_rst_n_i, I_sdrc_selfrefresh => I_sdrc_selfrefresh_i, I_sdrc_power_down => I_sdrc_power_down_i, I_sdrc_dqm => I_sdrc_dqm_i, O_sdrc_init_done => O_sdrc_init_done_o, O_sdrc_busy_n => O_sdrc_busy_n_o, O_sdrc_rd_valid => O_sdrc_rd_valid_o, O_sdrc_wrd_ack => O_sdrc_wrd_ack_o ); Вот тут я вижу несколько несоответствий. В общем если мы смотрим мануал Gowin SDRAM Controller User Guide то там показан следующий скрин: То есть у модуля имеем 5 выходных линий. Но видимо это устаревший вариант мануала и в среде разработки мне говорят использовать модуль HS: Цитата This controller is dedicated for embedded SDRAMs in the following devices. It should be considered for legacy designs. New designs should consider using SDRAM Controller HS. Генерю код для HS. your_instance_name: SDRAM_Controller_HS_Top port map ( O_sdram_clk => O_sdram_clk_o, O_sdram_cke => O_sdram_cke_o, O_sdram_cs_n => O_sdram_cs_n_o, O_sdram_cas_n => O_sdram_cas_n_o, O_sdram_ras_n => O_sdram_ras_n_o, O_sdram_wen_n => O_sdram_wen_n_o, O_sdram_dqm => O_sdram_dqm_o, O_sdram_addr => O_sdram_addr_o, O_sdram_ba => O_sdram_ba_o, IO_sdram_dq => IO_sdram_dq_io, I_sdrc_rst_n => I_sdrc_rst_n_i, I_sdrc_clk => I_sdrc_clk_i, I_sdram_clk => I_sdram_clk_i, I_sdrc_cmd_en => I_sdrc_cmd_en_i, I_sdrc_cmd => I_sdrc_cmd_i, I_sdrc_precharge_ctrl => I_sdrc_precharge_ctrl_i, I_sdram_power_down => I_sdram_power_down_i, I_sdram_selfrefresh => I_sdram_selfrefresh_i, I_sdrc_addr => I_sdrc_addr_i, I_sdrc_dqm => I_sdrc_dqm_i, I_sdrc_data => I_sdrc_data_i, I_sdrc_data_len => I_sdrc_data_len_i, O_sdrc_data => O_sdrc_data_o, O_sdrc_init_done => O_sdrc_init_done_o, O_sdrc_cmd_ack => O_sdrc_cmd_ack_o ); вопрос в том куда подключать линии: O_sdram_clk => O_sdram_clk_o, O_sdram_cke => O_sdram_cke_o, O_sdram_cs_n => O_sdram_cs_n_o, O_sdram_cas_n => O_sdram_cas_n_o, O_sdram_ras_n => O_sdram_ras_n_o, O_sdram_wen_n => O_sdram_wen_n_o, Они же явно сделаны для внешней сдрам. После портирования кода примера на VHDL после включения флаги я висну в состоянии STATE_IDLE видимо потому что модуль не выставляет флаги готовности. when RESET=> I_sdrc_selfrefresh_i <= '1'; bytes_counter <= shift; I_sdrc_dqm_i <= (others => '0'); -- аналогично маске для 4 байтов в данных I_sdrc_wr_n_i <= '1'; I_sdrc_rd_n_i <= '1'; I_sdrc_data_i <= (others => '0'); dst_write_adr <= 0; src_read_adr <= 0; I_sdrc_rst_n_i <= '0'; write_data_len <= 4; inbufptr := 1; debug_led_drive <= '0'; if delay_counter> 10 then --debug_led_drive <= not debug_led_drive; delay_counter <= 0; mstate <= STATE_IDLE; I_sdrc_rst_n_i <= '1'; I_sdrc_power_down_i <= '0'; shift := shift + 1; mem_buffer(0) <= std_logic_vector(to_unsigned(shift, 8)) ; else delay_counter <= delay_counter + 1; end if; when STATE_IDLE=> if O_sdrc_init_done_o = '1' and O_sdrc_busy_n_o = '1' then mstate <= STATE_WRITE_WAIT; debug_led_drive <= '1'; end if; Что я сделал не так то?? Что мне сделать с выходными линиями чтобы они подключились к встроеной sdram? Изменено 11 августа, 2023 пользователем Worldmaster Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zversky 17 12 августа, 2023 Опубликовано 12 августа, 2023 · Жалоба SDRAM Controller GW2AR-18 RefDsign на https://www.gowinsemi.com/en/support/ip_detail/5/ смотрели? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться