Перейти к содержанию
    

Maverick_

Модератор
  • Постов

    3 861
  • Зарегистрирован

Весь контент Maverick_


  1. https://docs.amd.com/v/u/en-US/xapp888_7Series_DynamicRecon Заранее спасибо...
  2. У процессора есть возможность подключения SRAM памяти? если есть то лучше сделать - fpga имитирует работу SRAM памяти - процессор видит fpga как внешнюю SRAM память тогда берете двухклоковую память один порт заводите на на логику имитирующую SRAM память второй порт на Вашу логику + 1-2 сигнала от процессора (GPIO) для квітірования операций (готовность данних, какие-то команди) В случае с SPI тоже самое процессор мастер. FPGA слейв. Есть протокол общения. Логика FPGA декодирует протокол. В зависимости например данние или команди пишет в блочную память (двухклоковую и двухпортовую) по определенним адресам команди/данние И дает сигнал квитирования дальнейшей логике для дальнейшей обработки... по 1-2 сигнала от процессора (GPIO) для квітірования операций - логика понимает по каким адресам надо считать Для процессора наоборот - логика пишет в память и квитирует по gpio (возможно на преривание для процессора) Таким образом можно передавать информацию размером в несколько сотен байт/слов Можно организовать даблбуффер в FPGA для обмена... пришла команда с процессора дай мне такие то данние - мастер видает N байт/слов(главное клок SPI) - логика слейва видает нужную информацию
  3. Интересует референсый дизайн "Serial LVDS High-Speed ADC Interface" xapp524- zip архив https://docs.amd.com/v/u/en-US/xapp524-serial-lvds-adc-interface Заранее благодарен
  4. используй library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; тогда все будет ок) (я использую vhdl2008)
  5. возможно library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity demux is generic ( SEL_W : natural := 4 ); port ( -- inputs din: in std_logic; sel: in std_logic_vector (SEL_W-1 downto 0); -- outputs data_out: out std_logic_vector (2**SEL_W-1 downto 0) ); end demux; architecture rtl of demux is begin demux_pr: process(sel, din) begin -- set all the outputs to '0' to avoid inferred latches data_out <= (others => '0'); -- Set input in correct line data_out(to_integer(unsigned(sel))) <= din; end process; end rtl; такую конструкцию имели ввиду
  6. я все время использую для описания мультиплексора (VHDL) ptr_read_next <= ptr_read + 1 when rd_en_int = '1' else ptr_read; или под клоком в процессе с помощью if else
  7. если посмотреть его репозиторий много плюшек можно найти... )))
  8. к BSACPLD рекомендую к использованию корки I2C по ссылке
  9. привет, у тебя нет переделанного модуля I2C для 7 битной адресации - просто микросхема не поддерживает 10 битную адресацию отбой - разобрался... все работает работает в связке с stm32 логика мастер <=> процессор слейв
  10. 1200 мне кажется только для сериализатора/десериализатора в MIPI (схема которая превращает паралельные данные в последовательные для передачи по LVDS) а не для всей схемы Если прочитать примечание то частота для данных 1200/8=150 600 тоже довольно высокая частота - проверьте точно необходима?
  11. смотрели дизайн-пример https://www.gowinsemi.com/en/support/ip_detail/4/ и https://www.gowinsemi.com/en/support/database/2056/? пусть даже на другой плис... к каждой IP core среда должна генерировать файл констрейнов... во всяком случае у Intel, Xilinx так происходит... сгенерируйте пример и посмотрите что да как PS я с GOWIN не работал...
  12. применение IP core двухклоковое фифо между SDRAM и логикой - как решение проблеми IP core само пропишет ограничения для CDC в sdc файл
  13. library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity shift_example is Port ( input_number : in STD_LOGIC_VECTOR (7 downto 0); shift_amount : in INTEGER; result_left : out STD_LOGIC_VECTOR (7 downto 0); result_right : out STD_LOGIC_VECTOR (7 downto 0)); end shift_example; architecture Behavioral of shift_example is begin -- Сдвиг влево для умножения result_left <= input_number sll shift_amount; -- Сдвиг вправо для деления result_right <= input_number srl shift_amount; end Behavioral;
  14. Вам надо сгенерировать билиотеку для моделирования для IP core и в do файле подключить или запускать симуляцию из под Вашей студии
  15. тогда работа с описаниями по ссилкам https://github.com/tirfil/VhdI2CSlave https://github.com/murattcan/FPGA-I2C-Slave можно поискать еще и включить в поиск модули на verilog кроме vhdl - уверен их много, просто я потратил на поиск 2 мин PS возможна дополнительная работа напильником
  16. Возьмите плату на stm32 и организуйте обмен для отладки
  17. https://ru.scribd.com/document/78090253/Carrier-Recovery-and-Automatic-Gain-Control-on-FPGA-s-based-platform-IEEE-802-15-3c-mm-Wave-PHY-Application
  18. можете просто скомпилировать и посмотреть тактовую частоту для конвеерного счетчика - просто любопытство в описании модуля для создания паузы - проблема ж частоты именно в "большой" разрядности счетчика например 64 бита и/или 32 бита и/или 24 бита менять разрядность в строке width_g: natural := 64; -- Must be divisible by parts_g. в некоторых памятях например в DDR есть так называемый burst режим -когда данные пишутся в память непрерывно по 16/32/64 слова/байта вот можно использовать например если тактовая отличается в разы - в DDR3/4 используется также при работе с трансиверами например 10G - 64 bit данные
×
×
  • Создать...