Ответы:
HDL - это универсальное имя для всех языков определения оборудования (Verilog, VHDL и т. Д.), Точно так же, как объектно-ориентированный может ссылаться на C ++, Java и т. Д.
RTL, с другой стороны, является способом описания схемы.
Вы пишете свой код уровня RTL на языке HDL, который затем переводится (с помощью инструментов синтеза) в описание уровня шлюза на том же языке HDL или на любом другом устройстве / процессе, которое вы примете.
Позвольте привести пример. Вот строка Verilog (HDL), описывающая мультиплексирование в RTL:
assign mux_out = (sel) ? din_1 : din_0;
Ваш инструмент синтеза может взять это и преобразовать в набор логических элементов или просто в макрос mux, который поддерживается вашим конечным устройством. Например, это может привести к созданию макроса mux
mux u3 (mux_out, din_1, din_0);
В обоих случаях вы можете подавать одни и те же входы на блок (RTL или уровень шлюза), и ваш вывод должен быть одинаковым. Фактически есть инструменты, которые проверяют вывод вашего синтеза по сравнению с вашим кодом RTL, чтобы убедиться, что инструмент случайно не оптимизировал или не изменил что-то во время синтеза, что вызвало несоответствие. Это называется формальной проверкой.
По ряду причин, функциональной совместимости, простоты изменения, понятности вы пишете свое описание цифровой схемы как RTL, а не на уровне шлюза.
HDL (Описание аппаратного языка) - это тип используемого языка, Verilog / VHDL, в отличие от JavaScript, не являющегося HDL.
RTL (уровень регистрации-передачи) - это уровень абстракции, на котором вы пишете. Я имею в виду три уровня: Поведенческий, RTL, Уровень шлюза.
Поведенческий имеет самый высокий уровень абстракции, который описывает общее поведение и часто не синтезируется, но полезен для проверки.
RTL описывает аппаратное обеспечение, которое вы хотите, подразумевая логику. определение триггеров, защелок и как данные передаются между ними. Это можно синтезировать, синтез может изменить / оптимизировать используемую логику, но не поведение. Переключение мультиплексоров для ворот и т. Д. Иногда инвертирование сигналов для лучшей оптимизации дизайна.
Verilog RTL подразумевает триггер:
logic a; //logic is SystemVerilog, could be a 'reg'
logic k; // Driven by RTL not shown
always @(posedge clk or negede rst_n) begin
if (~rst_n) begin
a <= 'b0 ;
end
else begin
a <= k ;
end
end
Комбинаторные побитовые операторы:
logic [1:0] n;
logic [1:0] m;
logic [1:0] result;
assign result = n & m ;
Уровень шлюза - это конструкция с использованием логических элементов (NAND, NOR, AND, OR, MUX, FLIP-FLOP). Он не нуждается в синтезе или является результатом синтеза. Это самый низкий уровень абстракции. это логические элементы, которые вы будете использовать на чипе, но в нем отсутствует позиционная информация.
Уровень ворот Verilog (та же функция, что и выше):
wire a;
wire k;
DFFRX1 dffrx1_i0 (
.Q (a), //Output
.QN( ), //Inverted output not used
.D (k), //Input
.CK(clk), //Clk
.RN(rst_n)// Active Low Async Reset
);
комбинаторный
wire [1:0] n;
wire [1:0] m;
wire [1:0] result;
AND2X1 and2x1_i0 (
.Y( result[0]),
.A( n[0] ),
.B( m[0] )
);
AND2X1 and2x1_i1 (
.Y( result[1]),
.A( n[1] ),
.B( m[1] )
);
MyReg[7..1] := MyReg[6..0]; MyReg[0] := SerInput; MyReg.Clk = SerClk; MyReg[7..0].AR = !InBus[7..0] & Load; MyReg[7..0].AP = InBus[7..0] & Load;
(асинхронный сдвиговый регистр с параллельной нагрузкой, который может быть реализован на CPLD Xilinx 9536 с использованием блоков с асинхронным сбросом / предустановкой), это будет считаться RTL или уровнем шлюза?
AND(.a(),.b()) OR(.a(),.b())
чисто логические ворота, подключаемые. У меня сложилось впечатление, что RTL - это то, что вы намереваетесь синтезировать, даже комбинаторные схемы, поскольку вы все еще описываете изменение данных, но не логические элементы непосредственно.
MyLatch
, это базовая ячейка, созданная вами, или подразумеваемая защелка? Если вы создаете экземпляр шлюза, это уровень шлюза. Если вы подразумеваете это, это RTL. С библиотекой уровня ворот будет связано время для моделирования условий гонки / сбоев и т. Д. Моделирование RTL выполняется с идеальными компонентами.