HDL (Hardware description Language) adalah jenis bahasa yang digunakan, Verilog / VHDL versus javascript non-HDL.
RTL (Register-transfer level) adalah level abstraksi yang Anda tulis. Tiga level yang saya maksud adalah Behavioral, RTL, Gerbang-level.
Behavioral memiliki lapisan abstraksi tertinggi yang menggambarkan perilaku keseluruhan dan seringkali tidak dapat disintesis, tetapi berguna untuk verifikasi.
RTL menjelaskan perangkat keras yang Anda inginkan dengan menyiratkan logika. mendefinisikan sandal jepit, kait dan bagaimana data ditransfer di antara mereka. Ini dapat disintesis, sintesis dapat mengubah / mengoptimalkan logika yang digunakan tetapi bukan perilaku. Beralih mux untuk gerbang dll beberapa kali membalikkan sinyal untuk lebih mengoptimalkan desain.
Verilog RTL menyiratkan flip-flop:
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
Operator Bitwise Kombinatorial:
logic [1:0] n;
logic [1:0] m;
logic [1:0] result;
assign result = n & m ;
Gerbang tingkat adalah desain menggunakan gerbang logika dasar (NAND, NOR, AND, OR, MUX, FLIP-FLOP). Tidak perlu disintesis atau merupakan hasil dari sintesis. Ini memiliki tingkat abstraksi terendah. itu adalah gerbang logika yang akan Anda gunakan pada chip, tetapi tidak memiliki informasi posisi.
Gerbang level Verilog (fungsi yang sama seperti di atas):
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
);
Kombinatorial
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] )
);