Jump to content

    

Kostochkin

Участник
  • Content Count

    152
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Kostochkin

  • Rank
    Частый гость
  • Birthday 05/07/1983

Информация

  • Город
    Москва

Recent Profile Visitors

995 profile views
  1. Попробовал, на другой машине, все работает. Какие-то проблемы в операционной системе наверно. Всех благодарю.
  2. Прочитал. Я понял, что Active-HDL Lattice Edition должен работать по лицензии от Lattice Diamond, которую я скачал с сайта lattice. Diamond работает на этой лицензии, но при запуске Active-HDL Lattice Edition требует лицензию и не запускается.
  3. Здравствуйте. Установил lattice diamond 3.11. В него входит active-hdl 10.5, но без лицензии. Подскажите как быть? Благодарю.
  4. Здравствуйте. С плис lattice никогда не работал. Но возможно предстоит. Как я понял, среду разработки можно скачать бесплатно с их сайта. Вопрос1: есть ли в lattice примитивы аналоги xilinx IODELAY и IOBUFDS ? Если есть, то где можно скачать pdf с их описанием? или хотя бы их названия.. Вопрос2: есть ли в среде разработки lattice аналог xilinx chip scope? Если есть, то как называется? Благодарю.
  5. Здравствуйте. Как в verilog приравнять все биты регистра переменной длины к 1 ? Есть вариант без for? В vhdl так : a <= (others => '1');
  6. 20 точек на период меня устраивает, пока. И решение Accum <= Accum + 89128 + 42 * Freq_Data - тоже, только мне надо более точно задавать частоту синусоиды. Правильно ли я понимаю, что для этого мне надо увеличить размерность аккумулятора? Благодарю.
  7. Зачем 14-16 бит фазы? А где взять такую таблицу от 4000 до 16000 значений? Благодарю
  8. Благодарю. но при 100 МГц, между крайними частотами синусоиды войдут 2 значения, так как мин шаг 10нс. Получается я могу подвинуть синусоиду на 4 положения и все, хотелось бы больше, хотя бы 32 значения..
  9. Здравствуйте. Стоит задача сделать частотную модуляцию на плис. Плис - 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 МГц, хотя может быть можно поднять, но на много все равно не получиться. Подскажите, благодарю.
  10. Здравствуйте. Я работаю в основном с xilinx. У меня вопрос. Какая плис побыстрее: spartan6 slx45 или max10M40 ? Или они примерно одного разряда? Трансиверы не важны. В max10 подкупает флешка на борту. Благодарю.