Jump to content

    

Maverick_

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

    3576
  • Joined

Community Reputation

10 Хороший

About Maverick_

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

23389 profile views
  1. Добрый день Есть результаты в виде 128 битных данных, мне их надо записать в файл в hex формате. Написал функции для этого ---------------------------------------------------------------------- -- convert an unsigned value(4 bit) to a HEX digit (0-F) function to_HexChar(Value : UNSIGNED) return CHARACTER is constant HEX : STRING := "0123456789ABCDEF"; begin if (Value < 16) then return HEX(to_integer(Value)+1); else return 'X'; end if; end function; -- return TRUE, if input is a power of 2 function div_ceil(a : NATURAL; b : POSITIVE) return NATURAL is -- calculates: ceil(a / b) begin return (a + (b - 1)) / b; end function; -- return log2; always rounded up function log2ceil(arg : positive) return natural is variable tmp : positive; variable log : natural; begin if arg = 1 then return 0; end if; tmp := 1; log := 0; while arg > tmp loop tmp := tmp * 2; log := log + 1; end loop; return log; end function; -- format a std_logic_vector as HEX string function raw_format_slv_hex(slv : STD_LOGIC_VECTOR) return STRING is variable Value : STD_LOGIC_VECTOR(4*div_ceil(slv'length, 4) - 1 downto 0); variable Digit : STD_LOGIC_VECTOR(3 downto 0); variable Result : STRING(1 to div_ceil(slv'length, 4)); variable j : NATURAL; begin Value := STD_LOGIC_VECTOR (resize(unsigned(slv), Value'length)); j := 0; for i in Result'reverse_range loop Digit := Value((j * 4) + 3 downto (j * 4)); Result(i) := to_HexChar(unsigned(Digit)); j := j + 1; end loop; return Result; end function; но моделсим ругается (vcom-1360) Array type of "outdata" does not have an index constraint. вот процесс LIBRARY ieee; USE ieee.std_logic_1164.all; use ieee.numeric_std.all; use ieee.math_real.all; use std.textio.all; ....... write_to_file0: process(all) variable outdata_line: line; variable outdata : STRING; file output_data_file: text open write_mode is "final_out.txt"; begin if rising_edge(clk) then if huffman_bitsream_final_out.valid = '1' then outdata := raw_format_slv_hex( STD_LOGIC_VECTOR (bitsream_final_out.bitstream)); write(outdata_line,outdata); writeline(output_data_file,outdata_line); end if; end if; end process; Подскажите пожалуйста, что нужно сделать чтобы была заись в файл в hex формате?
  2. Крутое решение имея fpga покупать логику на микросхемах.
  3. Добрый день Взможно ли работать с SFP модулем в плис с помощью Triple-Speed Ethernet ? (плис arria10) Кто то так пытался делать? PS догадываюсь что так возможно никто не делал и возможно это" изврат"
  4. цитата понравилась... Всем: Прошу закачивать дебаты высказываться только по существу
  5. я уже подумываю перевести этот топик в В помощь начинающему
  6. можно купить такую плату процессор, память и экран Совет: Начните с простого. Для начала берите готовую плату, дальше только разработка программного обеспечения
  7. Посмотрите пожалуйста на плату которую я Вам посоветовал. Там хард процессор уже имеется (stm32) на мой взгляд излишен. Память к процессору подключена, а fpga может к ней обращаться через DMA. HDMI на борту платы имеется... PS не изобретайте себе трудности там где они не должны быть...
  8. попробуйте посмотреть на эту плату https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=205&No=1046&PartNo=2 DMA поможет обращаться к памяти процессора... FPGA на плате топовая
  9. Добрый день есть generic library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; use ieee.std_logic_misc.all; use work.arithmetic_pkg.all; entity aligner is generic( UNIT_WIDTH : integer := 1; NUM_UNIT_INPUT : integer := 16;* NUM_UNIT_OUTPUT : integer := 16; -- must be larger than NUM_UNIT_INPUT NUM_UNIT_INPUT_WIDTH : integer := work.arithmetic_pkg.clog2(NUM_UNIT_INPUT+1);* NUM_UNIT_OUTPUT_WIDTH : integer := work.arithmetic_pkg.clog2(NUM_UNIT_OUTPUT+1); ALIGNED_LEFT : std_logic := '1' --set to 1 of aligned to the left, otherwise right ); port( clk : in std_logic; reset_n : in std_logic; start : in std_logic; input_data : in std_logic_vector(UNIT_WIDTH*NUM_UNIT_INPUT-1 downto 0); input_data_valid : in std_logic; input_num : in unsigned(NUM_UNIT_INPUT_WIDTH-1 downto 0); input_last : in std_logic; task_last_in : in std_logic; --the last slice of the task output_data : out std_logic_vector(UNIT_WIDTH*NUM_UNIT_OUTPUT-1 downto 0); output_data_valid : out std_logic; output_num : out unsigned(NUM_UNIT_OUTPUT_WIDTH-1 downto 0); output_last : out std_logic; task_last_out : out std_logic ); end entity; При этом квартус 18.1 ругается Error (10552): VHDL expression error at aligner.vhd(14): illegal NUM_UNIT_INPUT in expression Error (10556): VHDL error at aligner.vhd(11): generic "NUM_UNIT_INPUT" cannot be used in its own interface list Номера строк в которых ошибка отметил звездочкой. Подскажите пожалуйста как по другому написать чтобы не было ошибки. Ниже привожу описание arithmetic_pkg library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; use ieee.std_logic_misc.all; package arithmetic_pkg is function clog2(arg: natural) return natural; function dividor_round_to_ceil(divisor : integer; dividend : integer) return integer; end package arithmetic_pkg; package body arithmetic_pkg is function clog2(arg: natural) return natural is begin if arg <= 1 then return 0; elsif arg <= 2 then return 1; elsif arg <= 4 then return 2; elsif arg <= 8 then return 3; elsif arg <= 16 then return 4; elsif arg <= 32 then return 5; elsif arg <= 64 then return 6; elsif arg <= 128 then return 7; elsif arg <= 256 then return 8; elsif arg <= 512 then return 9; elsif arg <= 1024 then return 10; elsif arg <= 2048 then return 11; elsif arg <= 4096 then return 12; elsif arg <= 8192 then return 13; elsif arg <= 16384 then return 14; elsif arg <= 32768 then return 15; elsif arg <= 65536 then return 16; elsif arg <= 131072 then return 17; elsif arg <= 262144 then return 18; elsif arg <= 524288 then return 19; elsif arg <= 1048576 then return 20; elsif arg <= 2097152 then return 21; elsif arg <= 4194304 then return 22; elsif arg <= 8388608 then return 23; elsif arg <= 16777216 then return 24; elsif arg <= 33554432 then return 25; elsif arg <= 67108864 then return 26; elsif arg <= 134217728 then return 27; elsif arg <= 268435456 then return 28; elsif arg <= 536870912 then return 29; elsif arg <= 1073741824 then return 30; else return 31; end if; end; function dividor_round_to_ceil(divisor : integer; dividend : integer) return integer is begin if((dividend mod divisor) = 0)then return (dividend/divisor); else return (dividend/divisor + 1); end if; end; end package body arithmetic_pkg;
  10. Так и сделаю, но вначале попытаюсь разобраться. Спасибо
  11. Добрый день Создал qsys проект Затем создал топ файл. Начал компилировать... Выдаются ошибки (ниже), но я ж удалил top_qsys.qsys т.к. она не используется... Error: Could not find file to batch generate: ../eth_10g_2ch/ip/top_qsys/top_qsys_reset_in.ip Error: Could not find file to batch generate: ../eth_10g_2ch/ip/top_qsys/top_qsys_alt_em10g32_0.ip Error: Could not find file to batch generate: ../eth_10g_2ch/ip/top_qsys/top_qsys_clock_in.ip Error: Could not find file to batch generate: ../eth_10g_2ch/ip/top_qsys/top_qsys_iopll_0.ip Error: Could not find file to batch generate: ../eth_10g_2ch/ip/top_qsys/top_qsys_eth_10g2_2ch_0.ip может подскажете в чем проблема? PS Ошибки не понимаю - не знаю как их исправить...