SlavaKPSS 0 13 ноября, 2009 Опубликовано 13 ноября, 2009 · Жалоба Здравствуйте. Подскажите новичку существует ли визуальный редактор-инструмент для систем на основе систем ПЛИС, в котором рисуешь тактовую "временную" диаграмму c привязкой к одному глобальному сигналу , а на выходе получаешь VHDL или Verilog программу пригодную для прошивки ПЛИС, естественно не для моделирования. Диаграммы работы очень простые от одного глобального сигнала длиной до 200 циклов получаются 14 различных сигналов с длительностями равными кратному числу глобала и с двигами на него же, потом это все дело зацикливается. Языки хардварного уровня просто нет времени учить, да и это не моя специальность т.к. 95 процентов рабочего времени занимаюсь технологией. Раньше эти задачи решал с помощью микроконтроллера, но на такие задачи все это дело плохо ложится т.к. постоянно приходится менять импульсы и тратится куча драгоценного времени на тупую подгонку nop-ов и setb-ов. На время нашел выход генератор цифровых последовательностей AKC-4116, импульсы с которого через буферную ПЛИС (забил место на плате), у которой входы соединены с выходами и сигналы затем поступают на аналоговые преобразователи уровня. Хочется отучить "коробку" от компьютера. Использую в работе Xilinx ISE Design Suite 10.1 и xcr3064xl-6PC44 (Coolrunner XPLA3). Пытаюсь уже безуспешно года два взвалить сию задачу на студентов, но у них дипломные работы заканчиваются раньше чем они чего то освоят в плане программирования ПЛИСов, а выдресировать их рисовать в визуальном редакторе гораздо проще, т.к. они с компьютером с пеленок на ты. Если хоть кто нибудь, что то подскажет буду очень благодарен. С Уважением Слава. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Джеймс 3 14 ноября, 2009 Опубликовано 14 ноября, 2009 (изменено) · Жалоба ... существует ли визуальный редактор-инструмент для систем на основе систем ПЛИС, в котором рисуешь тактовую "временную" диаграмму c привязкой к одному глобальному сигналу , а на выходе получаешь VHDL или Verilog программу пригодную для прошивки ПЛИС, естественно не для моделирования. Было такое у Альтеры в Max+2, только без промежуточной трансляции в HDL, а как самоcтоятельное средство описания. Изменено 14 ноября, 2009 пользователем Джеймс Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SlavaKPSS 0 14 ноября, 2009 Опубликовано 14 ноября, 2009 · Жалоба Было такое у Альтеры в Max+2, только без промежуточной трансляции в HDL, а как самоcтоятельное средство описания. Спасибо за наводку, но к сожалению я уже плату нашлепал под Хилиникс, и на сколько я знаю у Альтеры выбор с радиационно-стойкими ПЛИС не богат. Так как собираюсь покупать у Хилиникса что нибудь радиационно-стойкое или перекладывать программу на базовый матричный кристал от Зеленограда, они в основном рекомендуют выполнять программы на XILINX Foundation SeriesBase PC на библиотеках XC2000, XC3000, XC 4000, XC 4000E или ALTERA-MAX+plusIIVer.6.2 только с применением VHDL описания. Всегда хочется сразу убить несколько зайцев, чтобы и приборная часть и технологическое оборудование работало на одном и том же. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dvladim 0 14 ноября, 2009 Опубликовано 14 ноября, 2009 · Жалоба Диаграммы работы очень простые от одного глобального сигнала длиной до 200 циклов получаются 14 различных сигналов с длительностями равными кратному числу глобала и с двигами на него же, потом это все дело зацикливается. Языки хардварного уровня просто нет времени учить, да и это не моя специальность А какие-то незнакомые визуальные утилиты время учить есть? Может, все-таки, как-нибудь сами? Например, все что нужно забиваем в память, плюс счетчик адреса циклический: module top ( rst, clk, dout ); input rst; input clk; output [13 : 0] dout; reg [7 : 0] addr; rom rom ( .clk (clk), .addr (addr), .dout (dout) ); always @(posedge clk or posedge rst) begin if (rst) addr <= 8'd0; else if (addr == 8'd200) addr <= 8'd0; else addr <= addr + 1'b1; end endmodule Модуль rom сделайте сами через Core Generator. В качестве содержимого нарисуйте нужную вейвформу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syv 0 14 ноября, 2009 Опубликовано 14 ноября, 2009 · Жалоба ... Если хоть кто нибудь, что то подскажет буду очень благодарен. С Уважением Слава. Я сам в этом деле только начинаю, но по-моему, как раз на Альтере в Квартусе надо использовать шаблон от машины состояний. Там потом все достаточно просто. Если сигналов немного, то можно уложиться в MAX3000A. А вообще-то, для того, чтобы качественно чего-то подсказать, надо знать сколько сигналов и как часто они должны меняться от входа. Хорошо бы одну из временных диаграмм в студию. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dvladim 0 15 ноября, 2009 Опубликовано 15 ноября, 2009 · Жалоба Использую в работе Xilinx ISE Design Suite 10.1 и xcr3064xl-6PC44 (Coolrunner XPLA3). Да, что-то не заметил, что схемка-то мелкая. Если бы схема была побольше, можно было бы в лоб - через память. А так, тогда так: always @(posedge clk) begin if (cnt == 8'd200) cnt <= 8'd0; else cnt <= cnt + 1'b1; case (cnt) 8'd0 : q0 <= 1'b1; 8'd3 : q0 <= 1'b0; 8'd7 : q1 <= 1'b1; 8'd10 : q1 <= 1'b0; 8'd30 : q2 <= 1'b1; 8'd40 : q2 <= 1'b0; endcase end Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SlavaKPSS 0 15 ноября, 2009 Опубликовано 15 ноября, 2009 · Жалоба Спасибо dvladim. Идею я понял, а дальше уже как нибудь сам. Мне вариант с памятью понравился универсальностью, а микросхему можно поменять Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 5 16 ноября, 2009 Опубликовано 16 ноября, 2009 · Жалоба все уже придумано до нас :) в верилоге есть функции $readmemb и $getpattern вот типа пример но наверняка есть опенсорсные рисовалки вэйформов, я никогда не интересовался, но что-то видел module top; parameter in_width=10, patterns=200, step=20; reg [1:in_width] in_mem[1:patterns]; integer index; // declare scalar inputs wire i1,i2,i3,i4,i5,i6,i7,i8,i9,i10; // assign patterns to circuit scalar inputs (a new pattern // is applied to the circuit each time index changes value) assign {i1,i2,i3,i4,i5,i6,i7,i8,i9,i10} = $getpattern(in_mem[index]); initial begin // read stimulus patterns into memory $readmemb("patt.mem", in_mem); // step through patterns (note that each assignment // to index will drive a new pattern onto the circuit // inputs from the $getpattern system task specified // above for(index = 1; index <= patterns; index = index + 1) #step; end // instantiate the circuit module mod1 cct(o1,o2,o3,o4,o5,o6,o7,o8,o9,o10, i1,i2,i3,i4,i5,i6,i7,i8,i9,i10); endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dvladim 0 16 ноября, 2009 Опубликовано 16 ноября, 2009 · Жалоба в верилоге есть функции $readmemb и $getpattern И шо, таки синтезируется уже? См. первый пост: а на выходе получаешь VHDL или Verilog программу пригодную для прошивки ПЛИС, естественно не для моделирования. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 5 17 ноября, 2009 Опубликовано 17 ноября, 2009 · Жалоба И шо, таки синтезируется уже? См. первый пост: прошу прощения, был неправ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться