Jump to content

    

Maverick_

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

    3512
  • Joined

  • Last visited

Community Reputation

10 Хороший

About Maverick_

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

Контакты

  • Сайт
    http://
  • ICQ
    0

Информация

  • Город
    Украина

Recent Profile Visitors

21188 profile views
  1. Может лучше такhttps://electronix.ru/forum/index.php?app=forums&module=forums&controller=topic&id=113483&do=findComment&comment=1170319
  2. описание https://www.xilinx.com/support/documentation/application_notes/xapp1163.pdf проект во вложении pid_regulator.zip Vivado HLS 2016.2 описание на xHDL в PID\pid_regulator\pid_regulator\syn
  3. обратите внимание на "новую память" hyperram - возможно пригодиться пример Всего 12-13 пинов
  4. На EPM240/570 Nios не запуститься. MAX10 уже позволяет запускать Nios ...
  5. пример сумматора с разрядностью более 32 бита library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity adder_half_unsigned_reg is generic( N : integer := 256); port ( i_clk : in std_logic; i_add1 : in std_logic_vector(N-1 downto 0); i_add2 : in std_logic_vector(N-1 downto 0); o_sum : out std_logic_vector(N-1 downto 0)); end adder_half_unsigned_reg; architecture rtl of adder_half_unsigned_reg is signal r_add1 : unsigned(N-1 downto 0); signal r_add2 : unsigned(N-1 downto 0); signal w_sum : unsigned(N-1 downto 0); begin -- combinatorial adder w_sum <= r_add1 + r_add2; r_process : process(i_clk) begin if(rising_edge(i_clk)) then -- register input r_add1 <= unsigned(i_add1); r_add2 <= unsigned(i_add2); -- register output o_sum <= std_logic_vector(w_sum); end if; end process r_process; Я не понял сложностей/проблемы с разрядностью, хотя перечитал несколько раз ветку...
  6. Язык это как карандаш, если умеешь рисовать то и с другим карандашом будешь рисовать... Мое мнение (Verilog я читаю без проблем).
  7. предложите лучшее решение если критикуете то хотя бы давайте объяснение... единственный минус это использование библиотеки " use IEEE.STD_LOGIC_UNSIGNED.ALL; "
  8. ---- Описывает логический элемент, который считает число единиц во входных данных. ---- Объяснение: ---- Нулевая ступень - суммируем группы по 4 бита, каждому такому сумматору должно потребоваться 3 LUT и никаких переносов. ---- Дальше суммируем обычным деревом сумматоров. Но - старшие биты в каждом из сумматоров обладают свойством, назовем, "исключительности". ---- То есть, если этот бит в 1, то все остальные младшие биты в 0 (максимальные числа в ступенях s0, s1, s2, s3 будут 4, 8, 16 и 32). ---- Поэтому для вычисления старшего бита не нужны переносы из младших. Вот на этих переносах задержки и экономятся. ---- Дальше - нужно применить схемы параллельных переносов, когда для их формирования используются только входные сигналы. ---- Только нужно еще определить, в каком случае параллельные переносы будут эффективнее последовательных. ---- Надеюсь, если правильно все написать, то быстродействие будет не меньше, чем при игнорировании carry. library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; USE ieee.numeric_std.ALL; entity sum1_std_logic_vector is Port ( clk : in std_logic; rst : in std_logic; d : in std_logic_vector(63 downto 0); sum : out std_logic_vector(6 downto 0)); end sum1_std_logic_vector; architecture behavioral of sum1_std_logic_vector is type ARRAY_TYPE_s0 is array (0 to 15) of std_logic_vector(2 downto 0); type ARRAY_TYPE_s1 is array (0 to 7) of std_logic_vector(3 downto 0); type ARRAY_TYPE_s2 is array (0 to 3) of std_logic_vector(4 downto 0); type ARRAY_TYPE_s3 is array (0 to 1) of std_logic_vector(5 downto 0); signal s0 : ARRAY_TYPE_s0; signal s1 : ARRAY_TYPE_s1; signal s2 : ARRAY_TYPE_s2; signal s3 : ARRAY_TYPE_s3; signal dc : std_logic_vector(63 downto 0); signal sumc : std_logic_vector(6 downto 0); begin process (clk, rst) begin if (clk'event and clk = '1') then dc <= d; sum <= sumc; end if; end process; process (dc, d, s0, s1, s2, s3) begin for i in 0 to 15 loop s0(i) <= conv_std_logic_vector( conv_integer(dc(4*i)) + conv_integer(dc(4*i + 1)) + conv_integer(dc(4*i + 2)) + conv_integer(dc(4*i + 3)), 3) ; for j in 0 to 7 loop s1(j)(2 downto 0) <= conv_std_logic_vector( conv_integer(s0(2*j)) + conv_integer(s0(2*j +1)), 3); s1(j)(3) <= s0(2*j)(2) and s0(2*j +1)(2); end loop; for k in 0 to 3 loop s2(k)(3 downto 0) <= s1(2*k) + s1(2*k +1); s2(k)(4) <= s1(2*k)(3) and s1(2*k +1)(3); end loop; for m in 0 to 1 loop s3(m)(4 downto 0) <= conv_std_logic_vector( conv_integer(s2(2*m)) + conv_integer(s2(2*m +1)), 5); s3(m)(5) <= s2(2*m)(4) and s2(2*m +1)(4); end loop; sumc(5 downto 0) <= conv_std_logic_vector (conv_integer(s3(0)) + conv_integer(s3(1)), 6); sumc(6) <= s3(0)(5) and s3(1)(5); end loop; end process; end behavioral; -- сумматор library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity ADDER is generic(n: natural :=2); port( A: in std_logic_vector(n-1 downto 0); B: in std_logic_vector(n-1 downto 0); sum: out std_logic_vector(n-1 downto 0); carry: out std_logic ); end ADDER; architecture behv of ADDER is signal result: std_logic_vector(n downto 0); begin result <= ('0' & A)+('0' & B); sum <= result(n-1 downto 0); carry <= result(n); end behv;
  9. Для начала открываем Template у каждого программного продукта он имеется. + coding style guidelines (например) Берем оттуда готовые описания, подгоняем под свои нужды и делаем для каждого описания отдельные файлы. Далее в топе просто их соединяем, как модули Для начала думаю будет норм... Далее смотрит отчет синтезатора и смотрит RTL вьювер - что и как получилось. Вместо рисования схемы на бумаге.. Далее можно попытаться объеденить базовые описания в одном (счетчики, дешифраторы мультиплексоры и т.д. описание памяти желательно оставить в отдельном файле) и посмотреть разницу... Не забываем про симуляцию... Иначе будет каша...
  10. Спасибо Не подскажите а цвет шины которую соединяю можно выбрать? пример во вложении в первом посте
  11. у меня квартус 17.1 и в ней так не происходит... или покажите это подробнее
    1. Alexey87

      Alexey87

      Спасибо, хорошая статья, но я к сожалению не понимаю vhdl(...

  12. Всем привет. Как сделать цветные соединения модулей? Пример во вложении...