KA3AKOB 0 11 февраля, 2022 Опубликовано 11 февраля, 2022 (изменено) · Жалоба Работаю в среде Xilinx Foundation 3.1. В основном рисую схемы в Schematic Editor, но есть необходимость писать часть схемы на Verilogе. Плата с FPGA Xilinx XC5200 уже приобретена, поэтому соображения типа, перейти на более новый тип FPGA, новую среду и т.п. не в данном случае. Когда рисую схемы в Schematic Editor пользуюсь библиотекой для XC5200, она задаётся в начале проектирования в соответствии с типом FPGA. В схемах запросто втаскиваю, например, библиотечный макрос счётчика на 4 бита: CB4CE. Необходимо написать макрос на Verilogе, включающий этот счётчик: module e70 (N20, OU) ; input N20 ; wire N20; output OU ; //reg OU ;// add your declarations here wire provod1; // add your code here CB4CE cnt (.CE(1'b1), .C(N20), .CLR(1'b0),.Q0(),.Q1(),.Q2(),.Q3(), .CEO(provod1)); CB4CE cnt2 (.CE(provod1), .C(N20), .CLR(1'b0),.Q0(),.Q1(),.Q2(),.Q3(OU)); endmodule Создаю две сущности этого счётчика и соединяю провода. Но транслятор во время сборки проекта фиксирует ошибку: Checking expanded design ... ERROR:NgdBuild:432 - logical block 'cnt' with type 'CB4CE' is unexpanded ERROR:NgdBuild:432 - logical block 'cnt2' with type 'CB4CE' is unexpanded ERROR:NgdBuild:456 - logical net '_Logic1_' has both active and tristate drivers ERROR:NgdBuild:456 - logical net 'N_N20' has both active and tristate drivers ERROR:NgdBuild:456 - logical net '_Logic0_' has both active and tristate drivers Такое впечатление, что в Foundation 3.1 можно только писать на самом языке Verilog и в результате получается модуль, состоящий только из примитивов библиотеки simprims, содержащей только вентили AND, OR, XOR и так далее. Как добиться, чтобы макросы, созданные в других моих же проектах, с помощью Schematic Editor, VHDL, Verilog , можно было использовать в моих новых проектах? Заранее, благодарю за ответы и советы. Изменено 11 февраля, 2022 пользователем KA3AKOB Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 25 11 февраля, 2022 Опубликовано 11 февраля, 2022 · Жалоба По идее вы должны сообщить в этом же файле название библиотеки откуда вы взяли этот компонент. А иначе он действительно не понимает что это за буковки... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KA3AKOB 0 11 февраля, 2022 Опубликовано 11 февраля, 2022 · Жалоба А что именно надо написать на Veriloge? Какую строчку? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mad_kvmg 0 11 февраля, 2022 Опубликовано 11 февраля, 2022 · Жалоба 1 hour ago, KA3AKOB said: Работаю в среде Xilinx Foundation 3.1. Мощно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 3 11 февраля, 2022 Опубликовано 11 февраля, 2022 · Жалоба 4 часа назад, KA3AKOB сказал: Работаю в среде Xilinx Foundation 3.1. В основном рисую схемы в Schematic Editor, но есть необходимость писать часть схемы на Verilogе. Как добиться, чтобы макросы, созданные в других моих же проектах, с помощью Schematic Editor, VHDL, Verilog , можно было использовать в моих новых проектах? Описывать базовые примитивы на языке - это путь в никуда. Подход простой. выделаете в схематике функционально законченный кусок (одноклоковая синхронизация, на входе регистровая структура, на выходе регистровая структура. Скачиваете с сайта xilinx документ xst.pdf. и вперед. для начала создаете свой счетчик с нужной разрядности, взяв пример из этого документа. переходите на поведенческое описание на языке. Ваше преимущество, вы знаете все базовые примитивы. Ваша задача - чтоб ваше поведенческое описание легло на эти базовые примитивы. Правильность текста отрабатывайте с помощью RTL просмотрщика. (Влоб схематик на язык не перевести. На языке проявляется другое мышление) module ct_cb8ce // verilog 2001 ( input c, input clr, input ce, output out_c ); reg [7:0] counter = 8'd0; always @(posedge c or posedge clr) begin if (clr) counter <= 8'd0; else if (ce) counter <= counter + 1'b1; end assign out_c = counter [7]; endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
likeasm 0 13 февраля, 2022 Опубликовано 13 февраля, 2022 (изменено) · Жалоба Насколько я помню, можно было схематик из Xilinx Foundation 4.1 версии транслировать в VHDL. Среда очень древняя, verilog 2001 она не поддерживала, только 95. Я помнится написал на verilog для XC4000 полином crc16. Скачайте лучше Xilinx Foundation 4.1 там есть больше возможностей. Но по мне такой дичью лучше не заниматься, а переходить на что-то посовременнее типа UltraScale и Vivado. Изменено 13 февраля, 2022 пользователем likeasm Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vladec 7 14 февраля, 2022 Опубликовано 14 февраля, 2022 · Жалоба Представляется, что Вам надо, как то оформить Верилоговский модуль как "черный ящик" (некий SYM) с прикрепленным файлом списка цепей (ngc, edn, ...), протранслировав предварительно этот модуль отдельно и затем вставить этот модуль в вашу схему. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KA3AKOB 0 14 февраля, 2022 Опубликовано 14 февраля, 2022 (изменено) · Жалоба 11.02.2022 в 19:05, MegaVolt сказал: По идее вы должны сообщить в этом же файле название библиотеки откуда вы взяли этот компонент. А иначе он действительно не понимает что это за буковки... Ну, да. Нужно сообщить название библиотеки. И где это название вписать? В какой именно текст на Verilogе? Когда рисую в Schematic Editorе, то в Project Managerе указываю из какой библиотеки таскать макросы, созданные в прошлых проектах, в текущий проект. Слева в Attached Libraries Выбираем нужную библиотеку, d00, например, нажимаем Add>> и можем таскать d00-ные макросы на схему. Но это на схеме. А я хочу втащить в текущий проект. А он уже пишется на Verilogе. Пока один единственный модуль e70. Пример его см. выше. Что именно надо написать в тексте e70.v, чтобы макрос CB4CE втащился в проект? Библиотека xc5200 уже присоединена, макросы из неё в тексте на верилоге использовать нельзя. Что написать в тексте, чтобы было можно? Изменено 14 февраля, 2022 пользователем KA3AKOB Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KA3AKOB 0 14 февраля, 2022 Опубликовано 14 февраля, 2022 · Жалоба 11.02.2022 в 21:31, sazh сказал: module ct_cb8ce // verilog 2001 ( input c, input clr, input ce, output out_c ); reg [7:0] counter = 8'd0; always @(posedge c or posedge clr) begin if (clr) counter <= 8'd0; else if (ce) counter <= counter + 1'b1; end assign out_c = counter [7]; endmodule Плата с FPGA Xilinx XC5200 уже приобретена, поэтому соображения типа, перейти на более новый тип FPGA, новую среду и т.п. не в данном случае. И Foundationа кроме 3.1 другого нет. И не надо. Я подозреваю, что пропустил в информациях что-то, что позволяет взять Xilinxовскую библиотеку для xc5200 и так же как для схем использовать модули из этой библиотеки в модуле на верилоге. Очень странно, если такой возможности в среде нет. Мне не счётчик на верилоге надо написать. Кстати, макрос на верилоге я в схемном проекте написать могу и использовать могу, а когда наоборот: в вериложном проекте вставить схемный примитив не могу: unexpanded. Это мне и кажется странным. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 25 14 февраля, 2022 Опубликовано 14 февраля, 2022 · Жалоба 33 минуты назад, KA3AKOB сказал: Ну, да. Нужно сообщить название библиотеки. И где это название вписать? В какой именно текст на Verilogе? Когда рисую в Schematic Editorе, то в Project Managerе указываю из какой библиотеки таскать `include "<file_name>" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 3 14 февраля, 2022 Опубликовано 14 февраля, 2022 · Жалоба 5 часов назад, KA3AKOB сказал: Плата с FPGA Xilinx XC5200 уже приобретена, поэтому соображения типа, перейти на более новый тип FPGA, новую среду и т.п. не в данном случае. И Foundationа кроме 3.1 другого нет. И не надо. Я подозреваю, что пропустил в информациях что-то, что позволяет взять Xilinxовскую библиотеку для xc5200 и так же как для схем использовать модули из этой библиотеки в модуле на верилоге. Очень странно, если такой возможности в среде нет. Мне не счётчик на верилоге надо написать. Кстати, макрос на верилоге я в схемном проекте написать могу и использовать могу, а когда наоборот: в вериложном проекте вставить схемный примитив не могу: unexpanded. Это мне и кажется странным. Может статься, эти примитивы только для схематика предназначены. Попробуйте примитив BUFG BUFG_inst ( .O(O), // Clock buffer output .I(I) // Clock buffer input втянуть. Такие примитивы должны подхватываться без всяких путей. Я могу понять про 5титысячник. Я не могу понять про Foundation. Найдите какой нибудь старенький айс, поддерживающий это семейство. С синтезатором, который в должной мере поддерживает язык. По мне, так надо оставить свои наработки в схематике только для поддержки проектов, которые были сделаны в схематике, дорабатывать только в схематике. А если головным модулем проекта является текст, так и все модули пишите в тексте без опоры на примитивы. Иначе о какой переносимости ваших проектов Вы говорите. module ct_div #( parameter xtal_clk = 33_333_333, baud = 115_200 ) ( input clk, input s_rst_n, output enable_wr ); ///////////////// $clog2 function integer clogb2 (input [31:0] value); begin value = value - 1; for (clogb2 = 0; value > 0; clogb2 = clogb2 + 1) value = value >> 1; end endfunction ///////////////// localparam clk_div = xtal_clk / baud, ct_width = clogb2(clk_div); //ct_width = $clog2(clk_div) reg [ct_width-1:0] ct = {ct_width{1'b0}}; reg enable_wr_rg = 1'b0; always @(posedge clk) begin if (s_rst_n == 1'b0) ct <= {ct_width{1'b0}}; else if (ct == clk_div-1) ct <= {ct_width{1'b0}}; else ct <= ct + 1'b1; enable_wr_rg <= (ct == clk_div-1); end assign enable_wr = enable_wr_rg; endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться