HDL (Donanım tanımı Dili) kullanılan dilin türüdür, Verilog / VHDL'ye karşı, HDL olmayan bir javascript.
RTL (Kayıt-transfer seviyesi) yazdığınız bir soyutlama seviyesidir. Bahsettiğim üç seviye Davranışsal, RTL, Kapı seviyesidir.
Davranış , genel davranışı tanımlayan ve genellikle sentezlenemeyen, ancak doğrulama için yararlı olan en yüksek soyutlama katmanına sahiptir.
RTL , istediğiniz donanımı mantık uygulayarak açıklar. parmak arası terliklerin, mandalların ve verilerin aralarında nasıl aktarıldığını tanımlama. Bu sentezlenebilirdir, sentez kullanılan mantığı değiştirebilir / optimize edebilir ancak davranışı değiştiremez. Kapıları vb. İçin anahtar değiştirme düğmeleri, tasarımı daha iyi hale getirmek için bazı zamanlarda sinyalleri ters çevirir.
Bir flip-flop ima eden 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
Kombinatoryal Bitwise operatörleri:
logic [1:0] n;
logic [1:0] m;
logic [1:0] result;
assign result = n & m ;
Geçit seviyesi , temel mantık geçitlerini (NAND, NOR, AND, VEYA, MUX, FLIP-FLOP) kullanan bir tasarımdır. Sentezlenmesi gerekmez veya sentezden elde edilen çıktıdır. Bu en düşük soyutlama seviyesine sahiptir. çipte kullanacağınız mantık geçitleridir, ancak konumsal bilgi içermemektedir.
Geçit seviyesi Verilog (yukarıdaki ile aynı fonksiyon):
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
);
kombinatoryal
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] )
);