Jump to content

    

_ANDREW

Участник
  • Content Count

    49
  • Joined

  • Last visited

Everything posted by _ANDREW


  1. Здравствуйте. У меня возникла проблема при освоении PCIe ядра для Virtex6 ML605. Я изучил документацию xapp1052.pdf, xapp1022.pdf, ug517.pdf, ug379.pdf. Скачал xapp1052.zip, xapp1022.zip и программу PciTree.exe. Прогрузил флеш на плате проектом примером с PIO-после перезагрузки плата не определилась системой. потом попробовал прогрузить примером который был в xapp1052.zip (пример с BMD). увидел плату с помощью PCITree. затем установил драйвер pcie_demo.sys из xapp1052.zip запустил соответсвующее приложение PCIe_Perf.exe. Оно показало что транзакции чтения и записи совершаются, показало скорость транзакций. Но я не понял что дальше мне делать с этим BMD. Мне нужно осуществлять передачу данных через шину в ПЛИС, их там обрабатывать, и отправлять обратно по шине. Поковырял с Chipscope различные шины в BMD во время транзакций записи и чтения, но куда подключится для получения данных так и не нашёл. Далее я попытался установить драйвер xilinx_pcie_block.sys из xapp1022.zip согласно документации xapp1022.pdf. Система WindowsXP SP3 перестала загружаться. Загрузка стала возможна только в безопасном режиме, в котором с помощью программы MET.exe из xapp1022.zip я смог записать и прочитать регистры как описано в xapp1022.pdf. Если кто то сталкивался с похожими проблемами помогите пожалуйста их решить. И если можно ответьте пожалуйста на несколько вопросов: 1. В чём принципиальное различие между BMD и PIO. 2. возможно ли с помощью драйвера в xapp1052.zip полноценно использовать ядро в режиме DMA(чтение и запись по адресам) система Windows.если кто то знает где можно найти драйвер(Windows) для работы с PCIe с описанием буду ОЧЕНЬ благодарен. Заранее огромное спасибо!
  2. Большое спасибо всем за ответ. То есть, если я правильно понял, даже при отсутствии black box в проекте на этапе синтеза невозможно узнать сколько % будет занимать проект. jojo, подскажите пожалуйста, как именно в % выделить слайсы. в файле cgd.pdf нашёл информацию по использованию констант AREA_GROUP, RANGE, но не совсем понятно.
  3. здравствуйте! вопрос следующий: после синтеза проекта XST он занимает 58% , а после имплементации 74, почему? отчёт по синтезу Selected Device : 6vlx240tff1156-2 Slice Logic Utilization: Number of Slice Registers: 99196 out of 301440 32% Number of Slice LUTs: 87661 out of 150720 58% Number used as Logic: 87644 out of 150720 58% Number used as Memory: 17 out of 58400 0% Number used as SRL: 17 Slice Logic Distribution: Number of LUT Flip Flop pairs used: 108451 Number with an unused Flip Flop: 9255 out of 108451 8% Number with an unused LUT: 20790 out of 108451 19% Number of fully used LUT-FF pairs: 78406 out of 108451 72% Number of unique control sets: 3868 IO Utilization: Number of IOs: 151 Number of bonded IOBs: 151 out of 600 25% Specific Feature Utilization: Number of Block RAM/FIFO: 157 out of 416 37% Number using Block RAM only: 157 Number of BUFG/BUFGCTRLs: 3 out of 32 9% отчёт по имплементации Device Utilization Summary: Slice Logic Utilization: Number of Slice Registers: 99,196 out of 301,440 32% Number used as Flip Flops: 99,196 Number used as Latches: 0 Number used as Latch-thrus: 0 Number used as AND/OR logics: 0 Number of Slice LUTs: 76,802 out of 150,720 50% Number used as logic: 74,551 out of 150,720 49% Number using O6 output only: 56,764 Number using O5 output only: 71 Number using O5 and O6: 17,716 Number used as ROM: 0 Number used as Memory: 17 out of 58,400 1% Number used as Dual Port RAM: 0 Number used as Single Port RAM: 0 Number used as Shift Register: 17 Number using O6 output only: 17 Number using O5 output only: 0 Number using O5 and O6: 0 Number used exclusively as route-thrus: 2,234 Number with same-slice register load: 2,224 Number with same-slice carry load: 10 Number with other load: 0 Slice Logic Distribution: Number of occupied Slices: 28,140 out of 37,680 74% Number of LUT Flip Flop pairs used: 93,406 Number with an unused Flip Flop: 8,206 out of 93,406 8% Number with an unused LUT: 16,604 out of 93,406 17% Number of fully used LUT-FF pairs: 68,596 out of 93,406 73% Number of slice register sites lost to control set restrictions: 0 out of 301,440 0% подскажите, может можно с помощью настроек уменьшить объём проекта... спасибо..
  4. здравствуйте. хотелось бы создать закрытое ядро из vhdl файла. слышал что можно использовать ngc файл или encripted ngc. среда разработки-xilinx ise 12.3. заранее спасибо.
  5. а почему не получилось??? синтезатор ругается?? каким Вы синтезатором пользуетесь??
  6. на 78 странице память подключена как примитив, а вот на стр 76, внизу (Register-Based Dual-Port SRAM) подключение памяти как синтезируемого компонента... и практически тоже самое что и в моём коде (только я прописал ROM с инициализированными значениями). Честно говоря, думаю что отличия в архитектуре у разных компаний не велики.. и я обычно не подключаю блоки как примитивы, лучше писать на чистом языке, с настройкой синтеза атрибутами, чем лепить примитивы, и каждый раз переделывать проект под разные микросхемы.
  7. Это для XILINX, атрибуты для родного XILINX SYN TOOLS (XST) который по умолчанию в ISE...
  8. Я всегда делаю 1. вот небольшой пример library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity ROM is port (CLK : in std_logic; EN : in std_logic; ADDR : in std_logic_vector(15 downto 0); DATA : out std_logic_vector(31 downto 0)); end ROM; architecture syn of ROM is type rom_type is array (0 to 1007) of std_logic_vector (31 downto 0); signal ROM : rom_type:= ( X"00000000", X"00040050", X"000d00c0", X"00cc01f0", X"00ea0180", X"01bb0080", X"01aa0090", X"01720120", X"014d0100", X"011001f1", X"010a00c1", X"00000010", X"00110160", X"00710200", X"00810110", X"008901a0", X"008d0111", X"00b801e0", X"00c10112", X"01cb0230", X"016c0091", X"015a0150", X"00000020", X"00130181", X"004d0210", X"006800c2", X"006c0140", X"00cc0092", X"01e401d0", X"01c00130", X"01a201e1", X"01630093", X"01200141", X"00000030", X"001200d0", X"001901c0", X"00620231", X"00680211", X"007800a0", X"009d0142", X"00ad00f0", X"01d401c1", X"01b30220", X"01740190", X"00000040", X"00120212", X"00310131", X"00550170", X"009b0221", X"00bd00d1", X"00e300a1", X"01400232", X"012b0041", X"012d0070", X"01220171", X"00000051" -- и так далее ); attribute ROM_STYLE : string; ---атрибуты для того чтобы при синтезе распределение было в блоковую память attribute ROM_STYLE of ROM: signal is "block"; begin process (CLK) begin if (CLK'event and CLK = '1') then if (EN = '1') then DATA <= ROM(conv_integer(ADDR)); end if; end if; end process; end syn; у Вас будут скорее всего другие атрибуты, или можно обойтись без них, с помощью настроек синтеза..
  9. Спасибо за то что люди отозвались и посоветовали несколько вариантов!! Всё обязательно попробую!!
  10. Muscat, я не тестировал декодер Витерби, и с Actel не работал, но имеется небольшой опыт тестирования других декодеров на Virtex5... Честно, я не вникал в архитектуру Actel, но в Virtex есть блочная память, думаю она есть и у Actel. так вот, я всегда использовал для теста эту самую память... Организую её как ROM и либо файлом, либо из vhd файла определяю начальные значения ячеек, а потом просто счётчиком по порядку перебираю ячейки... но всё это получится если длина кодового слова у Вас вместится в неиспользуемую память... И, если не секрет, для каких кодов Витерби делаете?? А то у меня тоже этот тип в дальнейшем, похоже, намечается...
  11. К сожалению обнаружил "ERROR:TclTasksC:partition_031: Partitions are no longer supported in 12.1 Project Navigator and Xilinx Tcl." Так что пока не ясно как избежать повторного синтеза...
  12. По поводу Incremental Synthesis нашёл в XST.pdf нашёл следующее: The incremental_synthesis and resynthesize constraints are no longer supported. Так что пока вопрос остаётся открытым...
  13. Здравствуйте. Пишу проект в ISE12.3 который состоит из файла top.vhd и нескольких вложенных файлов in_buf.vhd, fifo.vhd и out.buf. Был произведён синтез top.vhd, соответственно все 3 вложенных файла прошли синтез. Имеется ли такая возможность при изменении файла in_buf.vhd и повторном синтезе top.vhd не синтезировать fifo.vhd и out.buf, т.е. те которые прошли синтез и не изменялись? А то тратится очень много времени. Заранее спасибо.
  14. Всем спасибо за помощь!! Сегодня поковырял снова эту проблему, и выяснил, что моделсим не видит 'ifdef, а весь файл ddr3_model_parameters.vh написан под несколько микросхем памяти а конкретная выбирается с помощью условий ifdef `ifdef QUAD_RANK `define DUAL_RANK // also define DUAL_RANK parameter CS_BITS = 4; // Number of Chip Select Bits parameter RANKS = 4; // Number of Chip Selects `else `ifdef DUAL_RANK parameter CS_BITS = 2; // Number of Chip Select Bits parameter RANKS = 2; // Number of Chip Selects `else parameter CS_BITS = 2; // Number of Chip Select Bits parameter RANKS = 1; // Number of Chip Selects `endif `endif я убрал эту универсальность, всё сделал под конкретную микруху без ifdef и всё заработало... но это не порядок.. надо разбираться... на следующей неделе встречаюсь с гуру моделсима... у меня к нему масса вопросов... так что разберусь - отпишусь!!!
  15. Спасибо прописал ему полный путь `include "F:/PROJECTS/MMIG/ipcore_dir/ddr3/example_design/sim/ddr3_model_parameters.vh", моделсим его скушал, но то что было описано в ddr3_model_parameters.vh он так и не увидел...
  16. Вы имеете ввиду ГОСТ 28147-89? я его начинал делать, ради эксперимента, и не на такие скорости.. но потом эта задача отпала. но работу в режиме простой замены почти доделал. я бы посоветовал применить VIRTEX6, хотя думаю и Spartan6 с лихвой хватит и думаю что внешняя память будет не нужна, т.к. нет в алгоритме таких больших массивов данных которые не уместятся в BlockRAM плиски...
  17. я в верилоге тоже не очень, но все эти файлы создаёт COREGENERATOR, так что не с путями проблема. но что бы перепробовать всё, я ему полный путь прописывал, всё равно ругается.. :(
  18. Здравствуйте. Подскажите пожалуйста, я сгенерировал в MIG контроллер DDR3, сделал ВСЁ по мануалу (ug406) топом сделал testbanch из папки design_example/sim и попытался всё это дело просимулировать в modelsim6.5. Результаты весьма омрачающие... 1) модель памяти MIG генерирует ТОЛЬКО на верилоге. Я в верилоге не пишу, и поэтому так и не понял, почему modelsim пишет что 2001 редакция верилога не понимает глобальное объявление parametеr? и не понимает вставки 'include. A MIG всё делает с глобальным объявлением параметров. Пример (102,103,104,,,,,126,127,128 - номер строк) файл ddr3.v ............ 102 `include "ddr3_model_parameters.vh" 103 104 parameter check_strict_mrbits = 1; parameter check_strict_timing = 1; parameter feature_pasr = 1; parameter feature_truebl4 = 0; // text macros `define DQ_PER_DQS DQ_BITS/DQS_BITS `define BANKS (1<<BA_BITS) `define MAX_BITS (BA_BITS+ROW_BITS+COL_BITS-BL_BITS) `define MAX_SIZE (1<<(BA_BITS+ROW_BITS+COL_BITS-BL_BITS)) `define MEM_SIZE (1<<MEM_BITS) `define MAX_PIPE 4*CL_MAX // Declare Ports input rst_n; input ck; input ck_n; input cke; input cs_n; input ras_n; input cas_n; input we_n; 126 inout [DM_BITS-1:0] dm_tdqs; 127 input [bA_BITS-1:0] ba; 128 input [ADDR_BITS-1:0] addr; 129 inout [DQ_BITS-1:0] dq; inout [DQS_BITS-1:0] dqs; inout [DQS_BITS-1:0] dqs_n; output [DQS_BITS-1:0] tdqs_n; input odt; ...... и т.д. файл ddr3_model_parameters.vh содержит такие строки parameter DM_BITS = 1; // Set this parameter to control how many Data Mask bits are used parameter ADDR_BITS = 14; // MAX Address Bits parameter ROW_BITS = 14; // Set this parameter to control how many Address bits are used parameter COL_BITS = 11; // Set this parameter to control how many Column bits are used parameter DQ_BITS = 4; // Set this parameter to control how many Data bits are used **Same as part bit width** parameter DQS_BITS = 1; // Set this parameter to control how many Dqs bits are used при этом моделсим пишет # ** Error: F:/PROJECTS/MMIG/ipcore_dir/ddr3/example_design/sim/ddr3_model.v(102): Cannot open `include file "ddr3_model_parameters.vh". # ** Error: F:/PROJECTS/MMIG/ipcore_dir/ddr3/example_design/sim/ddr3_model.v(126): Undefined variable: DM_BITS. # ** Error: F:/PROJECTS/MMIG/ipcore_dir/ddr3/example_design/sim/ddr3_model.v(127): Undefined variable: BA_BITS. # ** Error: F:/PROJECTS/MMIG/ipcore_dir/ddr3/example_design/sim/ddr3_model.v(128): Undefined variable: ADDR_BITS. # ** Error: F:/PROJECTS/MMIG/ipcore_dir/ddr3/example_design/sim/ddr3_model.v(129): Undefined variable: DQ_BITS. # ** Error: F:/PROJECTS/MMIG/ipcore_dir/ddr3/example_design/sim/ddr3_model.v(130): Undefined variable: DQS_BITS. # ** Error: F:/PROJECTS/MMIG/ipcore_dir/ddr3/example_design/sim/ddr3_model.v(137): Undefined variable: TDLLK. # ** Error: F:/PROJECTS/MMIG/ipcore_dir/ddr3/example_design/sim/ddr3_model.v(166): Undefined variable: BL_BITS. короче не видит 'include Кто нибудь знает почему, и как выкрутиться?? Заранее спасибо
  19. Спасибо, сегодня уже это обнаружил... но если я правильно понимаю, то для обмена с памятью достаточно memc_ui_top со всеми его компонентами, а всё остальное нужно лишь для отладки?? Просто раньше я не работал с динамической памятью, а лишь со статической... Так что пока симулирую...
  20. нашёл несколько Ваших постов... http://electronix.ru/forum/index.php?showt...%8F%D1%82%D1%8C http://electronix.ru/forum/index.php?showt...%E0%EC%FF%F2%FC наверное их имели ввиду... спасибо, очень поучительно... теперь нужно разобраться с MIG и дожать сгенерённый им контроллер DDR3... а то там тоже неясности всплывают...
  21. Огромное Вам CaPpuCcino спасибо!!! Очень помогли... но я облазил почти весь сайт микрона, но нашёл несколько моделей на верилоге, и ни одной на vhdl, кругом только spice и IBIS, если не секрет, где Вы взяли прикрепленный файл?? и ещё раз спасибо! буду моделировать!
  22. Полностью поддерживаю, редактор настолько не дружелюбный, что действительно, проще перейти полностью на язык... а схемы просто просматривать в RTL viewer...
  23. Здравствуйте. Имеется следующая задача: написан блок на VHDL для Virtex6 который через ядро контроллера памяти должен общаться с DDR3 SDRAM SODIMM MT4JSF6464H – 512MB(стандартная планка памяти ноутбука). контроллер памяти планируется сгенерировать в coregenerator с помощью MIG. Платы с железом пока нет, но проект нужно отлаживать... Подскажите, каким образом можно просимулировать процесс чтения/записи памяти без железа, в симуляторе Modelsim SE PLUS 6.5??? Я отлично представляю каким образом процесс чтения/записи симулируется с блоковой памятью которая на борту чипа, но вот как симулировать внешнюю память не понятно... может быть есть библиотеки микросхем памяти для modelsim, которые можно откомпилировать в симуляторе и подключив, проводить симуляцию... кто знает как симулировать внешние элементы помогите пожалуйста!!!!
  24. здравствуйте. искал,но не нашёл как на vhdlнаписать модуль памяти с разной разрядностью входной и выходной шины данных. не понятно каким образом объявлять сигнал, если писать в него данные одной разрядности(допустим 8), а читать из него данные другой разрядности(допустим 1). знаю что можно сгенерировать такой модуль в coregenerator, но меня это не устраивает. надо на языке написать. зараннее спасибо.