Jump to content

    

Maverick_

Модераторы
  • Content Count

    3474
  • Joined

Community Reputation

10 Хороший

About Maverick_

  • Rank
    я только учусь...
  • Birthday 01/12/1979

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

21959 profile views
  1. Еще есть замечания/предложения? Возможно что-то не понятно...
  2. Спасибо. Не знал, всегда думал что список чувствительности влияет только на симуляцию. Такое описание: process(avs_s0_read, avs_s0_write) begin -- if rst = '1' then -- we_commands <= '0'; -- elsif(rising_edge(clk)) then if avs_s0_read = '1' then we_commands <= '0'; elsif avs_s0_write = '1' then we_commands <= '1'; else we_commands <= '0'; end if; end process; addr_commands <= avs_s0_address; data_in_commands <= avs_s0_writedata; avs_s0_readdata <= data_out_commands; правильное ? все сигналы в списке чувствительности?
  3. Сделал прослойку (genericmux.vhd) между одним портом блочных памятей HDL (пример описания блочной памяти bram_tpd.vhd) проекта и процессором на шине авалон MM Пытаюсь читать и писать в них... Во вложении скрин результата чтения и записи... Такое ощущение что ему не хватает такта или где-то проблема с адресами... Помогите пожалуйста разобраться... Числа я пишу по порядку... как мысль: Возможно в проблема, что не хватает сигнала chipselect? если добавить в genericmux.vhd (new_component_0 в qsys) : wr_en_0 <= '1' when avs_s0_write ='1' and chipselect_s0 ='1' else '0'; и тогда для одного порта будет process(avs_s0_read, avs_s0_write) begin -- if rst = '1' then -- we_commands <= '0'; -- elsif(rising_edge(clk)) then if avs_s0_read = '1' then we_commands <= '0'; elsif avs_s0_write = '1' and wr_en_0 = '1' then we_commands <= '1'; else we_commands <= '0'; end if; addr_commands <= avs_s0_address; data_in_commands <= avs_s0_writedata; avs_s0_readdata <= data_out_commands; --end if; end process; тогда интерфейс авалон порта будет иметь вид: avs_s0_read : in std_logic; avs_s0_write : in std_logic; chipselect_s0 : in std_logic; avs_s0_address : in std_logic_vector((ADDR_LENGTH-1) downto 0); avs_s0_writedata : in std_logic_vector((DATA_LENGTH-1) downto 0); avs_s0_readdata : out std_logic_vector((DATA_LENGTH-1) downto 0); и так сделать для всех 7 портов... genericmux_hw.tcl genericmux.vhd bram_tpd.vhd
  4. Допустим альтера. Бурст режим тоже подразумевает работу с блоками данных Есть предложение что В блочном вроде быстрее, но данных должно быть много. Если маленькие пакеты и не часто то лучше burst
  5. Простое любопытство Кто-то сравнивал работу dma В burst и обычном блочном режиме, когда читаешь или пишешь блоками данных???
  6. Так я руками написал модуль ... Что еще нужно написать ? Помогите понять что не так
  7. В том то и дело, что проверил не работает.. Да мне надо описать прослойку avalon MM - 5 портов памяти... В tcl скрипте не подскажите где прописать латентность/задержку?
  8. Есть проект в нем 5 модулей памяти (в нем выведены просто порты памятей наружу), мне необходимо читать и писать из/в них. Желательно c возможностью выбора памяти с которой работаю. Сделал genericmux.vhd который работает как мультиплексор и конвертирует так сказать шину avalon MM в сигналы управления памяти, т.е. сигналы портов памяти с возможностью писать и читать данные. Мультиплексор переключается перед началом передачи данных. Поскажите в чем может быть ошибка в описании или tcl скрипте? ЗЫ Здесь задумался про латентность, у меня данные не на следующем такте а через такт появляются... genericmux.vhd genericmux_hw.tcl
  9. Всем доброго дня Есть маленький вопрос. У меня есть мастер на авалоне который пишет/читает в DMA DDR память, подключенную к ARM процессору. Сейчас встает вопрос перехода на Xilinx(Zynq) возможно есть какие то шаги перейти на axi шину "без боли".
  10. Ещё открыл этот автомат в notepad++ в одной области логика переходов в другой описание регистровой логики Вообще красота :)
  11. Делаю интерпретатор G code - управление шаговыми двигателями, движение по прямой, по дуге (по часой стрелке или против), винтовое движениеи так далее.. это мне надо для проверки работы
  12. мне надо чтобы были данные, а оставшиеся пространство памяти я заполняю нулями в приведенном примере у меня 28 нулей именно про них и речь сейчас мне постоянно надо считать оставшиеся свободное пространство и заполнять нулями я бы хотел автоматизацию типа (others=>"00000000000000000000000000000000"); и ниже N количество данных