Jump to content

    

Darky777

Участник
  • Content Count

    44
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Darky777

  • Rank
    Участник
  • Birthday 07/07/1994

Информация

  • Город
    СПб

Recent Profile Visitors

726 profile views
  1. IORD_32DIRECT(base, offset) IOWR_32DIRECT(base, offset, data) offset задаете побайтно.
  2. Благодарю за это пояснение. по какой-то причине казалось, что все ограничивается всего лишь 15мА
  3. Как я понимаю, сжечь ногу можно в таком случае: Представить ситуацию для примера. Ставим: 3 выхода row = zz1'b. 3 выxода col. = zz0'b Получаем большой ток, обе ноги выходят из строя. А что если 3 выхода row = zz1'b. 2 выxода col. = zzb и третий пин изменить на input?
  4. Был бы рад каким-либо пояснениям, ссылкам на мануалы, чтобы разобраться - почему.
  5. Приветствую, уважаемые форумчане! Занимаюсь домашними поделками. Возник вопрос с возможностью подключения. FPGA Cyclone IV соеденена к header разъему. Этому разъему я намерен подключить Светодиодную матрицу. 1057BS. Схема примерно такая: Резисторы конечно будут, чтобы не сжечь светодиоды. Собственно, дилетанский вопрос заключается в следующем: Можно ли в FPGA так сделать? если да, то каким образом следует конфигурировать пины, или может необходимо добавлять еще какой-либо элемент?
  6. Киньте, пожалуйста. Хотелось бы посмотреть.
  7. Благодарю! это именно то, что нужно. Это помогло мне найти вот этот док, который подробнее обо всем рассказывает. Ранее никогда на него не натыкался.
  8. Добрый день, уважаемые форумчане! Возник странный и, возможно, глуппый вопрос. Есть некий модуль TOP, который, как не трудно догодатся, является верхним в иерархии и все констрейны в частности с распиновкой под FPGA пишется под него (кроме распиновки и заданных клоков там ничего нет). Модуль TOP состоит из модулей А, B и т.д. Требуется оценить, какое количество ресурсов FPGA будет отнимать модуль А. Для этого я делаю топовым файлом в проекте модуль А и ставлю на сборку до стадии имплемента. В связи с тем, что количество IO портов значительно превышает допустимое количество портов у FPGA, стадия Implementation не подходит к концу и желаемый отчет об утилизации ускользает. Воркэраунд для меня был следующим: ставлю в настройках проекта кристалл пожирнее и собираю заново и такой способ меня устраивает, кроме того, что мне приходится ждать, пока соберутся IP-корки, которые входят в модуль А. Собственно вопрос звучит следующим образом: есть ли некая настройка в проекта в Vivado, включив которую можно собрать проект вне контекста проекта, как корку?
  9. Из-за подобных случаев перешел на QuestaSim. В нем много инструментария, но мне он нравится потому, что он дотошнее проверяет проект и соответственно чаще ругается.
  10. Если речь про JESD204b, то был опыт. Как раз с ZCU102. тоже были проблемы с синхронизацией .В итоге задали клок внешним общим и точным опорником на один из разъемов SMA в zcu102 и на АЦП. Все проблемы с синхронизацией сразу пропали. UPD: Пардон. мой комментарий неуместен. Не обратил внимание на ваш заявленный АЦП. В нем отсутствует JESD
  11. Отлично, идею я понял. еще раз спасибо. Осталось еще разобраться, насколько это "переносимый" вариант для других семейств зайлинска.
  12. Действительно, для этого нужно будет софт писать.. Спасибо!
  13. Если в лоб, то я бы попробовал воспользоваться функцией. Но как по ресурсам оптимизирует синтезатор - мне неизвестно. Это вариант использования за один такт. function [4:0] count_ones; input [31:0] vector; integer i; begin count_ones = 0; for (i = 0; i < 32; i=i+1) begin count_ones = count_ones + vector[i]; end end endfunction wire [31:0] a; wire [4:0] result_a; assign a = ... ; assign result_a = count_ones(a);
  14. Если честно, не совсем понял решения.. Через инстанс примитива или самописный вериложный файл суть не меняется - нужно указать путь к файлу инициализации, будь то .hex или .mem. Речь же идет об этом документе? О дефайнах я не думал.. Надо попробовать. Если что-то получится - отпишу в этой теме
  15. Привет всем! Есть такая задача: инициализировать память в верилоговских исходниках через функцию readmemh/readmemb в Vivado, причем так, чтобы файл грамотно подцеплялся не только в Vivado, но и в симуляции в QuestaSim/Modelsim. module sdp_bram #( parameter P_MEM_SIZE = 16384 , parameter P_DATA_SIZE = 72 , parameter P_ADDR_WIDTH = 14 , parameter P_NBPIPE = 1 ,// Number of pipeline Registers in BRAM P_NBPIPE =>1 parameter P_INIT_FILE = "" ) ( input clk , input wea , input rstb , input regceb, // Output Register Enable input mem_en, // Memory Enable input [ P_DATA_SIZE-1:0] dina , input [P_ADDR_WIDTH-1:0] addra , input [P_ADDR_WIDTH-1:0] addrb , output logic [ P_DATA_SIZE-1:0] doutb ); (* ram_style="block" *) logic [P_DATA_SIZE-1:0] mem [P_MEM_SIZE]; logic [P_DATA_SIZE-1:0] mem_reg; logic [P_DATA_SIZE-1:0] mem_pipe [P_NBPIPE - 1:0]; logic mem_en_pipe_reg[P_NBPIPE:0]; // Pipelines for memory enable generate if (P_INIT_FILE != "") begin: use_init_file initial $readmemh(P_INIT_FILE, mem, 0, P_MEM_SIZE-1); end else begin: init_bram_to_zero integer ram_index; initial for (ram_index = 0; ram_index < P_MEM_SIZE; ram_index = ram_index + 1) mem[ram_index] = {P_DATA_SIZE{1'b0}}; end endgenerate .... Эта память - часть проекта, в котором участвует несколько человек. У всех разные операционки Linux Windows, разные пути до проектов. У меня была идея: выцепить из вивадо какую-нибудь переменную окружения, сообщающая о расположении проекта и через относительный путь указывать файл данных для памяти. Основывалась она на том, что в файле проекта .xpr я встретил кучу вот таких строк: <File Path="$PPRDIR/../my_module.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> Вивадо осознает, что она находится в какой-то директории. Однако если в tcl консоль в виваде ввести : puts "$PPRDIR" то удачно идешь куда подальше он тебе сообщит, что такой переменной не объявлено. Далее я расуждал так: Если где-то получить таки знание о переменной, а потом попробовать проиниализировать память например вот так parameter P_INIT_FILE = "$PPRDIR/../file.hex"; sdp_bram #( .P_MEM_SIZE(P_MEM_SIZE), .P_DATA_SIZE(P_DATA_SIZE), .P_ADDR_WIDTH(P_ADDR_WIDTH), .P_NBPIPE(P_NBPIPE), .P_INIT_FILE(P_INIT_FILE) ) i_sdp_bram ( .clk (clk ), .rstb (1'b0 ), .mem_en(1'b1 ), .wea (wea ), .regceb(reb ), .dina (dina ), .addra (addra), .addrb (addrb), .doutb (doutb) ); То должно сработать. По правде не говоря я не знаю, прокатило ли бы это. Знаю, что с коркой все отлично срабатывает, однако этот вариант не подходит, поскольку под каждую новую память с другими настройками нужно генерить новую корку. Проще говоря, прошу вас поделиться опытом и идеями. Гуглить пытался, но тщетно. Vivado 2018.2.