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

olvldrozd

Участник
  • Постов

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

  • Посещение

Репутация

0 Обычный
  1. Здравствуйте. Суть проблемы в следующем. Решил я посмотреть на Xilinx System Generator с помощью руководства: https://www.xilinx.com/support/documentatio...en-tutorial.pdf. Соответственно из ПО: MATLAB R2015a (установлен в C:\MATLAB_R2015a) и Vivado 2015.3 (в версии WebPack, установлен в C:\Xilinx\Vivado\2015.3). В ходе выполнения Lab 1 при симуляции получаю вот такую ошибку: ERROR: [uSF-XSim-62] 'elaborate' step failed with error(s). Please check the Tcl console output or 'C:/Users/Олег/AppData/Local/Temp/xlsim59393e36/hdl_netlist/xelab.sim/sim_1/behav/elaborate.log' file for more information. Также при повторной попытке провести симуляцию появилась еще одна ошибка: Please make sure that Vivado library path, C:/Xilinx/Vivado/2015.3/lib/win64.o, is also added in your LD_LIBRARY_PATH environment. Генерация проекта проходит без ошибок. Кто-нибудь сталкивался с подобным? Текст из log-файла прикрепил. elaborate.txt
  2. Проблема была в частичной потере ссылок на библиотеку footprint-ов. Благодарю за внимание.
  3. Здравствуйте. Осваиваю многоканальность в Altium Designer 10, по аналогии со статьей с возможностью копирования топологии каналов, т.к. первый опыт с многоканальностью, то делаю все по статье. Каналов три. Проблема в следующем, при попытке передать изменения в PCB получаю ошибки о том, что footprint-ы для элементов, входящих в каналы не найдены. В чем может быть проблема? С компонентами, не входящими в каналы, все в порядке, библиотеки посадочных мест подключены.
  4. Благодарю за внимание. Цикл статей уважаемого iosifik-а я видел и читал, но, видать, что-то недопонял. Вот с образом мышления пока не очень, но буду разбираться.
  5. Здравствуйте. Есть приемопередатчик SPI (исходный код взят отсюда: https://www.eewiki.net/display/LOGIC/Serial...+Master+(VHDL)), переписывать его на Verilog я не стал, вроде бы в сочетании VHDL и Verilog в одном проекте ничего страшного нет. От внешнего устройства посредством приемопередатчика я получаю 8-битные пакеты открытых данных, потом формирую из них 64-битные пакеты открытых данных и передаю криптографическому блоку на шифрование. Между приемопередатчиком и криптографическим блоком "расположен" управляющий блок, предназначенный для задания настроек приемопередатчика, управления приемопередатчиком и формирования 64-битных пакетов данных. Код ниже (код с комментариями: http://paste.org/73758). `timescale 1ns / 1ps module spi_1_control( input [63:0] rx_plain, output reg [63:0] tx_plain, output reg enable_1, input result_1, output reg enable_spi_1, output reg cpol_spi_1, output reg cpha_spi_1, output reg count_spi_1, output reg [31:0] clk_div_spi_1, output reg [31:0] addr_spi_1, output reg [7:0] tx_data_spi_1, input busy_spi_1, input [7:0] rx_data_spi_1 ); parameter count_64 = 57; reg count; always @ (rx_plain or busy_spi_1) begin cpol_spi_1 = 1; cpha_spi_1 = 1; count_spi_1 = 0; clk_div_spi_1 = 32'b 1; addr_spi_1 = 32'b 0; enable_spi_1 = 1; if (busy_spi_1 == 0) begin task_transmit (tx_data_spi_1, rx_plain, count_64); enable_1 = 1; end else tx_data_spi_1 = 8'b 0; end always @ (rx_data_spi_1 or busy_spi_1 or result_1) begin cpol_spi_1 = 1; cpha_spi_1 = 1; count_spi_1 = 0; clk_div_spi_1 = 32'b 1; addr_spi_1 = 32'b 0; enable_spi_1 = 1; if ((busy_spi_1 == 0) && (result_1 == 1)) begin task_resive (rx_data_spi_1, tx_plain, count_64); end else tx_plain = 64'b 0; end task task_resive; input [7:0] data_rd; output reg [63:0] block_0; input [8:0] count_value; integer count; begin @ (count_value or data_rd) for (count = 0; count < count_value; count = count + 8) begin case (count) 9'd 0 : block_0 [7:0] <= data_rd; 9'd 8 : block_0 [15:8] <= data_rd; 9'd 16 : block_0 [23:16] <= data_rd; 9'd 24 : block_0 [31:24] <= data_rd; 9'd 32 : block_0 [39:32] <= data_rd; 9'd 40 : block_0 [47:40] <= data_rd; 9'd 48 : block_0 [55:48] <= data_rd; 9'd 56 : block_0 [63:56] <= data_rd; default : block_0 <= 64'b 0; endcase end block_0 <= 64'b 0; count = 9'b 0; end endtask task task_transmit; output reg [7:0] data_wr; input [63:0] block_0; input [8:0] count_value; integer count; begin @ (count_value or block_0) for (count = 0; count < count_value; count = count + 8) begin case (count) 9'd 0 : data_wr = block_0 [7:0]; 9'd 8 : data_wr = block_0 [15:8]; 9'd 16 : data_wr = block_0 [23:16]; 9'd 24 : data_wr = block_0 [31:24]; 9'd 32 : data_wr = block_0 [39:32]; 9'd 40 : data_wr = block_0 [47:40]; 9'd 48 : data_wr = block_0 [55:48]; 9'd 56 : data_wr = block_0 [63:56]; default : data_wr = block_0 [7:0]; endcase end data_wr = 64'b 0; count = 9'b 0; end endtask endmodule Суть проблемы в следующем: в процессе синтеза (ISE Design Suite 14.4) получаю следующие предупреждения: WARNING:Xst:647 - Input <rx_plain> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. WARNING:Xst:647 - Input <rx_data_spi_1> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. WARNING:Xst:647 - Input <result_2> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. При этом структура проекта "разваливается". Организация процесса считывания данных через цикл также выдает ошибку, т.к. count не константа: if ((busy_spi_1 == 0) && (result_1 == 1)) for (count = 0; count > 57; count = count + 8) tx_plain [count + 7: count] = rx_data_spi_1; else tx_plain = 64'b 0; Это мой первый относительно большой проект на HDL-языках, до этого писал только на C/C++, поэтому некоторые конструкции могут быть C-подобными, за что прошу простить.
×
×
  • Создать...