Jump to content

    

Kostochkin

Участник
  • Content Count

    145
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Kostochkin

  • Rank
    Частый гость

Recent Profile Visitors

913 profile views
  1. 20 точек на период меня устраивает, пока. И решение Accum <= Accum + 89128 + 42 * Freq_Data - тоже, только мне надо более точно задавать частоту синусоиды. Правильно ли я понимаю, что для этого мне надо увеличить размерность аккумулятора? Благодарю.
  2. Зачем 14-16 бит фазы? А где взять такую таблицу от 4000 до 16000 значений? Благодарю
  3. Благодарю. но при 100 МГц, между крайними частотами синусоиды войдут 2 значения, так как мин шаг 10нс. Получается я могу подвинуть синусоиду на 4 положения и все, хотелось бы больше, хотя бы 32 значения..
  4. Здравствуйте. Стоит задача сделать частотную модуляцию на плис. Плис - spartan 6. На вход подается значение 8-бит - частота, фаза и амплитуда заданы жестко. На выходе нужна частотно-модулированная синусоида. Модуляция в общих чертах понятна, но у меня следующие требования: минимальная частота синусоиды - 4.25 МГц; максимальная частота синусоиды - 4.756 МГц; следовательно в этот промежуток мне надо уложить 256 шагов. Вот есть алгоритм DDS library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; use IEEE..std_logic_unsigned.all; -------------------------------------------------- Entity DDFS is -------------------------------------------------- Port ( CLK : in std_logic; Freq_Data : in std_logic_vector (7 downto 0); Dout : out std_logic_vector (7 downto 0) ); end DDFS; -------------------------------------------------- Architecture RTL of DDFS is -------------------------------------------------- signal Result : signed (7 downto 0); signal Accum : unsigned (20 downto 0) := (others=>'0'); signal Address : integer range 0 to 63; signal RomAddr : integer range 0 to 63; signal Quadrant : std_logic; signal Sign : std_logic; type Rom64x8 is array (0 to 63) of signed (7 downto 0); constant Sinus_Rom : Rom64x8 := ( x"02", x"05", x"08", x"0b", x"0e", x"11", x"14", x"17", x"1a", x"1d", x"20", x"23", x"26", x"29", x"2c", x"2f", x"32", x"36", x"39", x"3c", x"3e", x"40", x"43", x"46", x"48", x"4b", x"4d", x"50", x"52", x"54", x"57", x"59", x"5b", x"5d", x"5f", x"62", x"64", x"65", x"67", x"69", x"6b", x"6d", x"6e", x"70", x"71", x"73", x"74", x"75", x"76", x"77", x"79", x"79", x"7a", x"7b", x"7c", x"7d", x"7d", x"7e", x"7e", x"7f", x"7f", x"7f", x"7f", x"7f"); begin -- Phasenakkumulator process begin wait until rising_edge(CLK); Accum <= Accum + unsigned(Freq_Data); end process; -- BROM process begin wait until rising_edge(CLK); RomAddr <= Address; -- getaktete Adresse --> BRAM end process; Result <= signed(Sinus_Rom(RomAddr)); Quadrant <= Accum(Accum'left-1); Address <= to_integer(Accum(Accum'high-2 downto Accum'high-7)) when (Quadrant='0') else 63-to_integer(Accum(Accum'high-2 downto Accum'high-7)); -- 1 Takt Latency wegen BROM process begin wait until rising_edge(CLK); Sign <= Accum(Accum'left); end process; Dout <= std_logic_vector( Result) + x"7f" when (Sign='1') else std_logic_vector(0-Result) - x"7f"; end RTL; Но этот алгоритм по тактировании 100 МГц выдает максимальную частоту синусоины порядка 15 кГц. А мне надо от 4.25 МГц до 4.756МГц. Как вариант делать огромную таблицу на допустим 4096 значений, и при большой частоте синусоиды считывать не каждое значение а каждое 16 допустим, это относительно точности. А какие-то не табличные быстрые методы получения чм синусоиды есть? В моем проекте тактирование вывода синусоиды - 108 МГц, хотя может быть можно поднять, но на много все равно не получиться. Подскажите, благодарю.
  5. Здравствуйте. Я работаю в основном с xilinx. У меня вопрос. Какая плис побыстрее: spartan6 slx45 или max10M40 ? Или они примерно одного разряда? Трансиверы не важны. В max10 подкупает флешка на борту. Благодарю.
  6. Здравствуйте. Нужен плата от xilinx, стартер кит с ethernet 10G. Официальные дорогие и сложно достать. Вопрос: Кто-то имел дело с китайскими starter kit платами xilinx? Если да, то как впечатление? Они вообще рабочие? Стоит брать? Нужно что-то типа этого: https://ru.aliexpress.com/item/32890280772.html?spm=a2g0o.productlist.0.0.3577a4b7Uva36P&algo_pvid=f64672b6-93fa-47e3-b93f-b3ef3a2e2a95&algo_expid=f64672b6-93fa-47e3-b93f-b3ef3a2e2a95-2&btsid=8460f430-a622-466c-be76-45bb1df6d21b&ws_ab_test=searchweb0_0,searchweb201602_4,searchweb201603_55 И как обстоит дело с документацией и софтом для китайских плат? Благодарю.
  7. Здравствуйте. Стоит задача сложить 32 8-битных числа за один такт 20 Мгц. Вопрос, может был у кого-то опыт, max10 или spartan6 справятся с этим? Благодарю.
  8. Разработка проектов FPGA

    Здравствуйте. Я могу попробовать развить эту тему, но вам, как я понял в первую очередь нужен схемотехник, к которым я не отношусь, я - программист FPGA. Благодарю.
  9. Разработка проектов FPGA

    Моя почта - vaskinbox@mail.ru.
  10. Здравствуйте. Меня зовут Василий. Готов взяться за разработку fpga проектов различной сложности. Имею опыт работы с FPGA xilinx spartan 6, artix 7, kintex 7, altera max 10, cyclone 4, 5. ПО - ISE, vivado, quartus, active-hdl, modelsim. Интерфейсы - ethernet, ip/tcp/udp, spi, i2c, uart, can, modbus, sram, emmc, гигабитные трансиверы. Есть опыт в области обработки изображений. Моделирование, верификация, отладка. Район - Москва и область. Работа удаленная или частично удаленная, готов иногда приезжать в офис, если он в транспортной доступности. Благодарю.