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

Egel

Свой
  • Постов

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

  • Посещение

Репутация

0 Обычный

Информация о Egel

  • Звание
    Частый гость
    Частый гость
  • День рождения 03.06.1988

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array
  1. Честно говоря здесь не смотрел. Вам большое спасибо за доп. материал. Теперь я более чем вооружен :)
  2. За доки спасибо, ошибку понял По поводу первого вопроса - как лучше делать через PlanAhead? Делать отдельный проект и создавать периферию, а затем уже интегрировать ее с общим дизайном ZYNQ? Или как-то еще более элегантно можно это сделать?
  3. Привет коллеги! Ломаю голову над такой, казалось бы простой задачей - хочу создать собственную периферию для ZYNQ (плата ZedBoard). Есть проект в PlanAhead - базовые вещи (всякие HelloWorld и т.д.) работают нормально, все синтезируется и компилируется. В XPS во вкладке "Crate or Import Peripheral" создаю новую периферию - AXI4-Lite: Simple с 3 регистрами. Далее, на сколько я понимаю требуется изменить уже в ручном порядке закопанный файл user_logic.v/vhd, добавив уже свою логику и т.д. Вопрос: 1. Правильно ли я делаю? Читал на форумах про использования для этих целей Vivado, но это уже перебор (в рамках одного проекта ISE, PlanAhead, SDK, XPS - хотелось бы без Vivado обойтись, к тому же он больше для синтеза высокоуровневых языков C/C++ и т.д.) 2. Что сразу смущает - как что-то писать в регистры, доступные для процессоров из вновь созданной логики? Из описания шаблона на мой взгляд следует, что это сделать невозможно. Т.е. что-то читать с регистров конечно можно, а вот записать информацию, которую затем прочитает процессор невозможно без существенной переработки шаблонов... В общем где-то у меня недопонимание и я не знаю что читать - где смотреть. Заранее спасибо за помосчь :) //---------------------------------------------------------------------------- // user_logic.v - module //---------------------------------------------------------------------------- // // *************************************************************************** // ** Copyright (c) 1995-2012 Xilinx, Inc. All rights reserved. ** // ** ** // ** Xilinx, Inc. ** // ** XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" ** // ** AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND ** // ** SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, ** // ** OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, ** // ** APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION ** // ** THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, ** // ** AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE ** // ** FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY ** // ** WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE ** // ** IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR ** // ** REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF ** // ** INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS ** // ** FOR A PARTICULAR PURPOSE. ** // ** ** // *************************************************************************** // //---------------------------------------------------------------------------- // Filename: user_logic.v // Version: 1.00.a // Description: User logic module. // Date: Tue Jan 07 17:37:40 2014 (by Create and Import Peripheral Wizard) // Verilog Standard: Verilog-2001 //---------------------------------------------------------------------------- // Naming Conventions: // active low signals: "*_n" // clock signals: "clk", "clk_div#", "clk_#x" // reset signals: "rst", "rst_n" // generics: "C_*" // user defined types: "*_TYPE" // state machine next state: "*_ns" // state machine current state: "*_cs" // combinatorial signals: "*_com" // pipelined or register delay signals: "*_d#" // counter signals: "*cnt*" // clock enable signals: "*_ce" // internal version of output port: "*_i" // device pins: "*_pin" // ports: "- Names begin with Uppercase" // processes: "*_PROCESS" // component instantiations: "<ENTITY_>I_<#|FUNC>" //---------------------------------------------------------------------------- `uselib lib=unisims_ver `uselib lib=proc_common_v3_00_a module user_logic ( // -- ADD USER PORTS BELOW THIS LINE --------------- // --USER ports added here // -- ADD USER PORTS ABOVE THIS LINE --------------- // -- DO NOT EDIT BELOW THIS LINE ------------------ // -- Bus protocol ports, do not add to or delete Bus2IP_Clk, // Bus to IP clock Bus2IP_Resetn, // Bus to IP reset Bus2IP_Data, // Bus to IP data bus Bus2IP_BE, // Bus to IP byte enables Bus2IP_RdCE, // Bus to IP read chip enable Bus2IP_WrCE, // Bus to IP write chip enable IP2Bus_Data, // IP to Bus data bus IP2Bus_RdAck, // IP to Bus read transfer acknowledgement IP2Bus_WrAck, // IP to Bus write transfer acknowledgement IP2Bus_Error // IP to Bus error response // -- DO NOT EDIT ABOVE THIS LINE ------------------ ); // user_logic // -- ADD USER PARAMETERS BELOW THIS LINE ------------ // --USER parameters added here // -- ADD USER PARAMETERS ABOVE THIS LINE ------------ // -- DO NOT EDIT BELOW THIS LINE -------------------- // -- Bus protocol parameters, do not add to or delete parameter C_NUM_REG = 3; parameter C_SLV_DWIDTH = 32; // -- DO NOT EDIT ABOVE THIS LINE -------------------- // -- ADD USER PORTS BELOW THIS LINE ----------------- // --USER ports added here // -- ADD USER PORTS ABOVE THIS LINE ----------------- // -- DO NOT EDIT BELOW THIS LINE -------------------- // -- Bus protocol ports, do not add to or delete input Bus2IP_Clk; input Bus2IP_Resetn; input [C_SLV_DWIDTH-1 : 0] Bus2IP_Data; input [C_SLV_DWIDTH/8-1 : 0] Bus2IP_BE; input [C_NUM_REG-1 : 0] Bus2IP_RdCE; input [C_NUM_REG-1 : 0] Bus2IP_WrCE; output [C_SLV_DWIDTH-1 : 0] IP2Bus_Data; output IP2Bus_RdAck; output IP2Bus_WrAck; output IP2Bus_Error; // -- DO NOT EDIT ABOVE THIS LINE -------------------- //---------------------------------------------------------------------------- // Implementation //---------------------------------------------------------------------------- // --USER nets declarations added here, as needed for user logic // Nets for user logic slave model s/w accessible register example reg [C_SLV_DWIDTH-1 : 0] slv_reg0; reg [C_SLV_DWIDTH-1 : 0] slv_reg1; reg [C_SLV_DWIDTH-1 : 0] slv_reg2; wire [2 : 0] slv_reg_write_sel; wire [2 : 0] slv_reg_read_sel; reg [C_SLV_DWIDTH-1 : 0] slv_ip2bus_data; wire slv_read_ack; wire slv_write_ack; integer byte_index, bit_index; // USER logic implementation added here // ------------------------------------------------------ // Example code to read/write user logic slave model s/w accessible registers // // Note: // The example code presented here is to show you one way of reading/writing // software accessible registers implemented in the user logic slave model. // Each bit of the Bus2IP_WrCE/Bus2IP_RdCE signals is configured to correspond // to one software accessible register by the top level template. For example, // if you have four 32 bit software accessible registers in the user logic, // you are basically operating on the following memory mapped registers: // // Bus2IP_WrCE/Bus2IP_RdCE Memory Mapped Register // "1000" C_BASEADDR + 0x0 // "0100" C_BASEADDR + 0x4 // "0010" C_BASEADDR + 0x8 // "0001" C_BASEADDR + 0xC // // ------------------------------------------------------ assign slv_reg_write_sel = Bus2IP_WrCE[2:0], slv_reg_read_sel = Bus2IP_RdCE[2:0], slv_write_ack = Bus2IP_WrCE[0] || Bus2IP_WrCE[1] || Bus2IP_WrCE[2], slv_read_ack = Bus2IP_RdCE[0] || Bus2IP_RdCE[1] || Bus2IP_RdCE[2]; // implement slave model register(s) always @( posedge Bus2IP_Clk ) begin if ( Bus2IP_Resetn == 1'b0 ) begin slv_reg0 <= 0; slv_reg1 <= 0; slv_reg2 <= 0; end else case ( slv_reg_write_sel ) 3'b100 : for ( byte_index = 0; byte_index <= (C_SLV_DWIDTH/8)-1; byte_index = byte_index+1 ) if ( Bus2IP_BE[byte_index] == 1 ) slv_reg0[(byte_index*8) +: 8] <= Bus2IP_Data[(byte_index*8) +: 8]; 3'b010 : for ( byte_index = 0; byte_index <= (C_SLV_DWIDTH/8)-1; byte_index = byte_index+1 ) if ( Bus2IP_BE[byte_index] == 1 ) slv_reg1[(byte_index*8) +: 8] <= Bus2IP_Data[(byte_index*8) +: 8]; 3'b001 : for ( byte_index = 0; byte_index <= (C_SLV_DWIDTH/8)-1; byte_index = byte_index+1 ) if ( Bus2IP_BE[byte_index] == 1 ) slv_reg2[(byte_index*8) +: 8] <= Bus2IP_Data[(byte_index*8) +: 8]; default : begin slv_reg0 <= slv_reg0; slv_reg1 <= slv_reg1; slv_reg2 <= slv_reg2; end endcase end // SLAVE_REG_WRITE_PROC // implement slave model register read mux always @( slv_reg_read_sel or slv_reg0 or slv_reg1 or slv_reg2 ) begin case ( slv_reg_read_sel ) 3'b100 : slv_ip2bus_data <= slv_reg0; 3'b010 : slv_ip2bus_data <= slv_reg1; 3'b001 : slv_ip2bus_data <= slv_reg2; default : slv_ip2bus_data <= 0; endcase end // SLAVE_REG_READ_PROC // ------------------------------------------------------------ // Example code to drive IP to Bus signals // ------------------------------------------------------------ assign IP2Bus_Data = (slv_read_ack == 1'b1) ? slv_ip2bus_data : 0; assign IP2Bus_WrAck = slv_write_ack; assign IP2Bus_RdAck = slv_read_ack; assign IP2Bus_Error = 0; endmodule
  4. Нет, скорее блок от другой платы - 12 V, 3 A Доброволец нашелся, посмотрим. Спасибо за комментарий.
  5. Уважаемые коллеги! Нуждаюсь в починке платы Digilent Atlys. При попытке включить - не выказывает признаков к жизни. http://www.digilentinc.com/Products/Detail...&Prod=ATLYS Мех.-физических повреждений нет. Недавно еще работала. Предположительно могла использоваться с "не родным" блоком питания с отличием по вольтажу за счет чего и проблемы. Работа разовая. Оплата 2000 руб.
  6. Плата продана. Тему можно закрывать. Всем спасибо за проявленный интерес!
  7. На почту мне ничего не приходило. Послал свой телефон вам в личку.
  8. Были выходные. Все читаю. Предлагаю 4000. Новая 200$ + ждать 2 месяца доставку + проплата через юр. лицо + растаможка. Также вкупе отдам плату расширения. Мне кажется более чем адекватная цена. На счет почты - конечно, мне было бы удобнее встретиться в Москве :).
  9. Продам Spartan 3 Starter Kit +

    Здравствуйте! Продам Spartan 3AN Starter Kit: http://www.xilinx.com/products/boards-and-...AN-SK-UNI-G.htm + плату расширения: http://www.digilentinc.com/Products/Detail...&Prod=FX2BB Цена: 5000 руб. Все в отличном состоянии - использовалось 2-3 раза. Для связи: [email protected]
  10. :bb-offtopic: Почему каждое обсуждение предложений о работе здесь сопровождается жуткой однообразной нуднятиной? Не надоело вам писать каждый раз одно и то же? Если вам не нравятся условия, щелкайте на другую ссылку. Получается типично российское кухонное обсуждение сложностей жизни. И у вас это конечно отлично получается, сидя у себя на кухне со своим ноутбуком. Я всегда считал инженеров - образованной элитой, а вы выставляете нас плачущими детьми, злыми на жизнь и всех и вся. Не утруждайтесь комментировать данное сообщение, не выставляйте себя еще в более худшем свете. 2 Dmitriy 76. У вас отличный сайт! P.S. К данной компании я лично никакого отношения не имею. Просто надоело в каждой теме видеть одно и то же.
  11. Здравствуйте! Возник вопрос по functional coverage в VCS. Для сбора статистики написаны covergroup на SV. Используя команду urg можно собрать статистику и просмотреть ее в формате HTML. Теперь хотел бы связать тестплан с этими covergroup для большей наглядности. Как я понял у Synopsys есть тул VMM Planner, который делает подобные вещи. В нем есть 2 способа генерации "тестплана" для связки с покрытием. Первый - это использование документа в формате .xml (Exel/OpenOffice) , второй - это написание некого псевдокода. Естественно предпочтительный первый способ. Так как подобный трюк можно сделать в Modelsim/Questasim, т.е. для портабельности. Вот только вопрос - как грамотно создавать тестплан с помощью Exel/... Не нашел в документации Synopsys ни одного примера на эту тему... Может кто-нибудь пытался сделать подобное ?
  12. А может быть проблема при компиляции - разные compillation unit ? В этом случае точно нельзя ссылаться. Компилирую скриптом, в нем : ... -f $CHKK_HOME/cluster/chipKK.vlog.opt $CHKK_HOME/global_inc.sv ... global_inc.sv - файл, вида : `include "ovm_pkg.sv" import ovm_pkg::*; `include "ovm_macros.svh" `include "bench/cluster_bench_if.sv" `include "rx_tx/e3smu_raw_rcvr.sv" `include "rx_tx/e3smu_raw_trmr.sv" `include "bench/test_seq.sv" ... В общем спасибо за возможные варианты решения )) Подумаю еще ))
  13. Все таки я не понимаю - разве можно из метода класса написать : $root.top.one_level_deeper.a = 1; ?? На это ругается моделсим : ** Error: /home/litvinov_e/work/ChKK/simulation/tb_svn/chkk/sv_gen/tests/test_header_crc_error.sv(53): (vlog-7027) Dotted name ('$root.cluster_bench.Cluster0.IPL_O_CLK_p') not found in current scope. Note that hierarchical references are not allowed from within a package or $unit.
×
×
  • Создать...