Естественно, тот который сделал синтезатор. Согласно описанию на языке
- - - Добавлено - - -
Смотри RTL
Естественно, тот который сделал синтезатор. Согласно описанию на языке
- - - Добавлено - - -
Смотри RTL
Что? Этот убогий псевдоязык, у которого нет даже собственного компилятора? Средств верификации? Синтаксис которого более многословен, чем у VHDL, и более уродлив, чем у Verilog?
На котором, прошу прощения, нельзя описать даже простейший RS-триггер?
Он из сложного, многословного и путаного исходника сгенерируtт write-only непонятный VHDL или Verilog, про который нельзя будет даже проверить, была ли генерация корректной.
Элементарнейший пример уродства Clash:
Вот зачем отдельно указывать сигнатуру функции и отдельно её список аргументов? Чтобы ошибок насажать на ровном месте? Сравним с нормальным языком:Код:adc :: Byte -> Byte -> Byte -> (Byte, Byte)
adc flags a b = adcSbc A.AluADD flags a b
Да, конкретно в случае однострочных обёрток над универсальной функцией VHDL более многословен. Но и то -- шансов накосячить из-за опечатки значительно меньше.Код:function adc(flags : byte; a : byte; b : byte) return alu_result is
begin
adc <= adc_sbc(ALU_ADD, flags, a, b);
end;
Кстати, код вверху взят из реального проекта, написанного на Clash: https://github.com/polygonhell/Clash6502
Это попытка реализовать знаменитый процессор nMOS 6502 на Clash. Конкретно -- реализация АЛУ: https://github.com/polygonhell/Clash.../master/Alu.hs
В нём строк кода больше, чем в АЛУ оригинального процессора имеется транзисторов. Оцените компактность и выразительность этого языка.
И заодно уровень интеллекта автора: там для каждой команды имеется своя реализация -- ну вот как для adc выше -- и выходной мультиплексор на 50+1 вход. То есть, там 50 специализированных экземпляров АЛУ.
И ссылка на ЭТО висит на официальном сайте Clash! https://clash-lang.org/documentation/ , вторая в последнем блоке.
Я полагаю, больше примеров приводить не надо, масштабы катастрофы уже ясны и так.
Вот да, попадались и мне проекты на Clash, но видимо не для моего интеллекта, и как их развернуть во что то привычное - я так и не понял. :v2_conf2:
Посмотрел
меня глючит или оно таки синхронное?
Синхронное, мне повылазило, думал буфер это отдельный кусок схемы, еще бы посмотреть на rtl сгенеренный по VHDL
Но вот к примеру на verilog
На выходе дает 10LUT / 8триггеровКод:module Test1(
input wire clk,
input wire oe_n,
input wire ud,
output wire[7:0]q
);
reg [7:0] qreg = 0;
assign q = !oe_n ? qreg : 8'hzz;
always @ (posedge clk) qreg += ud ? 1 : -1;
endmodule
https://prnt.sc/12sop9a
так оно и есть по VHDL. по схематику генерит то что нарисовано с заменой Т триггеров на D + XOR с выхода на вход. но то квартус, в максплюсе RTL или нет совсем или я не знаю как его посмотреть.
по сути тот же принцип - регистр и сумматор с выхода на вход. зачем правда он 32-разрядный - непонятно...Цитата:
Но вот к примеру на verilog
Скрытый текст
Код:module Test1(
input wire clk,
input wire oe_n,
input wire ud,
output wire[7:0]q
);
reg [7:0] qreg = 0;
assign q = !oe_n ? qreg : 8'hzz;
always @ (posedge clk) qreg += ud ? 1 : -1;
endmodule
[свернуть]
На выходе дает 10LUT / 8триггеров
https://prnt.sc/12sop9a
Классная шутка!
- - - Добавлено - - -
Сам ничего не знаю, но тебе ВСЁ объясню!
Если будешь работать с железками ALTERA, то замечательно бы выучить AHDL.
Если на Xilinx или всём вместе - Verilog/SystemVerilog.
Вообще, лучше попробовать все эти языки и остановиться на том, на котором ЛИЧНО ТЕБЕ писать комфортнее всего.
- - - Добавлено - - -
Вангую, что AHDL даст близко к схематике, если не то же самое.
Естественно, поскольку это вообще не самостоятельный язык, а библиотека на языке Haskell, позволяющая описывать на нём синхронные схемы. (Надо полагать, Хаскелла ты не знаешь, поэтому и непонятно.) Потом схему можно либо симулировать либо сгенерировать на её основе VHDL/Verilog. Больше никакого инструментария нет и не будет.
На кой хрен такое чудо нужно -- я не пойму. Разве что потешить ЧСВ секты хаскеллистов.
PS: "Попадались проекты" -- это просто так, или по службе? :v2_wink2: