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

Maverick_

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

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

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


  1. Требуется разработать печатные платы. Работа единичная. В будущем возможно появится еще работа. САПР: Altium Designer / Circuit Studio Назначение плат: Модуль ввода/вывода дискретных сигналов с/в FPGA Плотность компоновки: средняя. Платы многослойные. 4-6 слоев. Высокоскоростных интерфейсов/радиочастотных сигналов на платах нет. Териториально Киев. За подробностями обращаться [email protected]
  2. Имеется отладочная плата https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=205&No=1046&PartNo=1 На странице https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=205&No=1046&PartNo=4 Скачал диск DE10-Nano CD-ROM (rev. C Hardware) Там проект DE10-Nano_v.1.3.7_HWrevC_SystemCD.zip\Demonstrations\SoC_FPGA\Nios_Access_DDR3 Проблема что с их sof файлом работает, с моим нет(который получаю при компиляции проекта). Заметил, что их sof файл 7276 КБ, мой файл 7275 КБ. У меня квартус QUARTUS_VERSION "17.1.0 Standard Edition Делал по https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=2ahUKEwicvv-8yYfmAhXMwosKHX_4DUQQFjAAegQIARAC&url=https%3A%2F%2Fwww.terasic.com.tw%2Fcgi-bin%2Fpage%2Farchive_download.pl%3FLanguage%3DEnglish%26No%3D1046%26FID%3D1c19d1d50e0ee9b21678e881004f6d81&usg=AOvVaw28MVWuh-9mygiqIj_B25S7 стр 73 Я делал через батники которые прилагаются в \de10nano_Nios_Access_DDR3\demo_batch просто по очереди меняв на свой sof и elf таким образом понял в чем проблема. Что не так? PS проект по требованию могу дать (хотя я просто обновил его до моей версии квартуса).
  3. пробуйте https://fex.net/s/enfol7c файл будет храниться 7 дней. Насчет закорма - как хотите :)
  4. можно попробовать типа новый стандарт плавающей запятой https://habr.com/ru/post/462385/ https://posithub.org/ здесь вроде есть ссылки на реализации https://posithub.org/docs/PDS/PositEffortsSurvey.html
  5. вот полная версия ссылка будет действительна 14 дней 2 Nick_KНасчет закорма - как хотите :)
  6. вот ссылка на файлообменник с книгой (кстати текст из книги копируется :)) ссылка будет действительна 14 дней PS к сожалению только первая половина
  7. Интересует вот эта книга https://www.chapters.indigo.ca/en-ca/books/fpga-prototyping-by-systemverilog-examples/9781119282709-item.html Заранее спасибо.
  8. Может лучше такhttps://electronix.ru/forum/index.php?app=forums&module=forums&controller=topic&id=113483&do=findComment&comment=1170319
  9. описание https://www.xilinx.com/support/documentation/application_notes/xapp1163.pdf проект во вложении pid_regulator.zip Vivado HLS 2016.2 описание на xHDL в PID\pid_regulator\pid_regulator\syn
  10. обратите внимание на "новую память" hyperram - возможно пригодиться пример Всего 12-13 пинов
  11. На EPM240/570 Nios не запуститься. MAX10 уже позволяет запускать Nios ...
  12. пример сумматора с разрядностью более 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; Я не понял сложностей/проблемы с разрядностью, хотя перечитал несколько раз ветку...
  13. Язык это как карандаш, если умеешь рисовать то и с другим карандашом будешь рисовать... Мое мнение (Verilog я читаю без проблем).
  14. предложите лучшее решение если критикуете то хотя бы давайте объяснение... единственный минус это использование библиотеки " use IEEE.STD_LOGIC_UNSIGNED.ALL; "
  15. ---- Описывает логический элемент, который считает число единиц во входных данных. ---- Объяснение: ---- Нулевая ступень - суммируем группы по 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;
  16. Для начала открываем Template у каждого программного продукта он имеется. + coding style guidelines (например) Берем оттуда готовые описания, подгоняем под свои нужды и делаем для каждого описания отдельные файлы. Далее в топе просто их соединяем, как модули Для начала думаю будет норм... Далее смотрит отчет синтезатора и смотрит RTL вьювер - что и как получилось. Вместо рисования схемы на бумаге.. Далее можно попытаться объеденить базовые описания в одном (счетчики, дешифраторы мультиплексоры и т.д. описание памяти желательно оставить в отдельном файле) и посмотреть разницу... Не забываем про симуляцию... Иначе будет каша...
  17. Спасибо Не подскажите а цвет шины которую соединяю можно выбрать? пример во вложении в первом посте
  18. у меня квартус 17.1 и в ней так не происходит... или покажите это подробнее
    1. Alexey87

      Alexey87

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

×
×
  • Создать...