مائی ایچ ڈی ایل
مائی ایچ ڈی ایل (انگریزی: MyHDL) [1] ایک پائیتھن پر مبنی ہارڈویئر ڈسکرپشن لینگویج ہے۔
اس زبان کی کچھ خصوصیات یہ ہیں:
- اس سے وی ایچ ڈی ایل اور ویری لاگ دونوں زبانوں میں کوڈ تیار کیا جا سکتا ہے۔[2]
- اس سے ٹیسٹ بینچ بھی تیار کیے جا سکتے ہیں [3] جس میں ٹیسٹ ویکٹر وی ایچ ڈی ایل اور ویری لاگ میں ہو سکتے ہیں۔
- سگنلوں کی ایک فہرست کو یہ منتقل کر سکتی ہے۔[4]
- آؤٹ پُٹ جانچ کو بھی باز تشکیل (کنورٹ) کر سکتی ہے۔ [5]
- یہ ویری لاگ کے ساتھ اس جیسا ماحول پیدا کر سکتی ہے۔[6]
- اس میں ایک ترقی یافتہ ڈیٹاٹائپ نظام ہے جو روایتی ڈیٹا کی اقسام سے الگ ہے۔ مائی ایچ ڈی ایل کا مترجم آلہ از خود تبدیلی کے لیے درکار عملی احکام لکھ دیتا ہے، اگر مقصدزبان کو اس کی ضرورت درکار ہو۔
مائی ایچ ڈی ایل کو جان ڈے کالووے نے تیار کیا۔ [7]
تبدیلی کی مثالیں
ترمیمیہاں پر آپ کچھ مثالیں دیکھ سکتے ہیں کہ کیسے مائی ایچ ڈی ایل ڈیزائنوں سے وی ایچ ڈیل یا ویری منتقلی ممکن ہے۔[8]
ایک چھوٹا جوڑنے والا ڈیزائن
- یہ مثال ایک چھوٹے جوڑنے والے ڈیزائن (small combinatorial design) کی ہے، جو بطور خاص تثنیہ (binary) سے خاکستری کوڈ (Gray code) تبدیلی کا کام کرتا ہے:
def bin2gray(B, G, width):
""" Gray encoder.
B -- input intbv signal, binary encoded
G -- output intbv signal, gray encoded
width -- bit width
"""
@always_comb
def logic():
Bext = intbv(0)[width+1:]
Bext[:] = B
for i in range(width):
G.next[i] = Bext[i+1] ^ Bext[i]
return logic
آپ کے صورت حال (instance) بنا سکتے ہیں اور ویری لاگ اور وی ایچ ڈی ایل میں اس طرح تبدیل کر سکتے ہیں:
width = 8
B = Signal(intbv(0)[width:])
G = Signal(intbv(0)[width:])
bin2gray_inst = toVerilog(bin2gray, B, G, width)
bin2gray_inst = toVHDL(bin2gray, B, G, width)
دستیاب ہونے والا ویری لاگ کوڈ اس طرح دکھے گا:
module bin2gray (
B,
G
);
input [7:0] B;
output [7:0] G;
reg [7:0] G;
always @(B) begin: BIN2GRAY_LOGIC
integer i;
reg [9-1:0] Bext;
Bext = 9'h0;
Bext = B;
for (i=0; i<8; i=i+1) begin
G[i] <= (Bext[(i + 1)] ^ Bext[i]);
end
end
endmodule
دستیاب ہونے والا وی ایچ ڈی ایل کوڈ اس طرح دکھے گا:
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;
use std.textio.all;
use work.pck_myhdl_06.all;
entity bin2gray is
port (
B: in unsigned(7 downto 0);
G: out unsigned(7 downto 0)
);
end entity bin2gray;
architecture MyHDL of bin2gray is
begin
BIN2GRAY_LOGIC: process (B) is
variable Bext: unsigned(8 downto 0);
begin
Bext := to_unsigned(0, 9);
Bext := resize(B, 9);
for i in 0 to 8-1 loop
G(i) <= (Bext((i + 1)) xor Bext(i));
end loop;
end process BIN2GRAY_LOGIC;
end architecture MyHDL;
مزید دیکھیے
ترمیمحوالہ جات
ترمیم- ↑ http://www.myhdl.org
- ↑ "Archived copy"۔ 19 اگست 2013 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 23 مئی 2013
- ↑ "آرکائیو کاپی"۔ 16 اگست 2013 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 23 دسمبر 2018
- ↑ "آرکائیو کاپی"۔ 16 اگست 2013 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 23 دسمبر 2018
- ↑ "آرکائیو کاپی"۔ 16 اگست 2013 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 23 دسمبر 2018
- ↑ "Archived copy"۔ 17 اگست 2013 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 23 مئی 2013
- ↑ http://www.linuxjournal.com/article/7542
- ↑ "Archived copy"۔ 17 اگست 2013 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 23 مئی 2013