verilog یکی از دو زبان توصیف سخت افزار (Hardware Description Language=HDL) معروف است که بر اساس زبان برنامه نویسی C بنا شده است. زبان های توصیف سخت افزار برای شبیه سازی مدارهای دیجیتالی و پیاده سازی آنها بر روی مدارات منطقی برنامه پذیر (Programmable logic devices=PLD) بکار می روند. زبان توصیف سخت افزار معروف دیگر VHDL نام دارد. زبان VHDL بر اساس زبان های ADAو Pascal ایجاد شده است.
منابع اینترنتی نشان می دهند که verilog بیشتر در اروپا و کره و ژاپن بکار می روند و زبان VHDL بیشتر در آمریکای شمالی و جنوبی و آسیای جنوب شرقی و هند استفاده می شود.
نرم افزارهایی برای تبدیل برنامه های نوشته شده به زبانهای Verilog ,VHDL به یکدیگر وجود دارند. یکی از این نرم افزار ها X-HDL نام دارد که بوسیله http://www.x-tekcorp.com ارائه شده است. برای دانلود و نصب و آشنایی با نحوه عملکرد این نرم افزار به پست زیر از همین وبلاگ مراجعه کنید:
برنامه ی مبدل کننده ی کدهای vhdl به verilog و verilog به vhdl
برا ی استفاده از این زبان به یک برنامه شبیه ساز نیاز دارید. تعدادی از این برنامه های شبیه ساز معروف عبارتند از : Modelsimو ActiveHDLو Synapticad VeriLoggerو XILINX ISE و Quartus
همانطوریکه گفته شد Vrliog(یا به عبارتی Verilog HDL) و VHDLبرای شبیه سازی سخت افزار و پیاده سازی آنها بر روی مدارات منطقی برنامه پذیر بکار میروند. مدارات منطقی برنامه پذیر از نظر تکنولوژی و نحوه عملکرد به چند دسته تقسیم میشوند که عبارتند از: PLAو CPLDو FPGA
CPLD ها برای کاربردهای آزمایشگاهی بسیار مناسب هستند. نمونه های کنونی آن می توانند در داخل مدار برنامه ریزی گردند
و با قطع شدن برق برنامه داخل آنها سرجایش می ماند و پاک نمی شود. یکی از CPLD های معروف که برد آموزشی آن به وفور در ایران عرضه می شود خانواده XC9500 است که توسط یکی از دو شرکت معروف سازنده قطعات برنامه پذیر به نام XILINX عرضه می شود. شرکت XILINX حدود 80 درصد بازار را در اختیار دارد. CPLD های خانواده XC9500 بر اساس تعداد ماکروسل ها و تعداد پین های آن به دسته های زیر تقسیم می شوند:
1) نوع 44 پینی با 36 ماکروسل:XC9536 PCC44
2) نوع 44 پینی با 72 ماکروسل:XC9536 PCC44
4) نوع 84 پینی با 108 ماکروسل XC95108 PLCC84
طبیعی است که نمونه ی با ماکروسل و تعداد پین های بیشتر دارای امکانات بیشتری است.
یک نمونه از برهای آموزشی CPLD XC9574 PLCC84 در ایران برد nsk105 ساخت شرکت نوآوران الکترونیک است که می توانید از آدرس زیر مشخصات آن را ببینید و خرید نمایید:
برد NSK105 ساخت شرکت نوآوران الکترونیک
از آنجا که تنها فرق مدل XC9572 و XC95108 در تعداد ماکروسل های آن است، من بعد از تهیه برد NSK105 برای داشتن امکانات بیشتر تراشه XC95108 را از پایا الکترونیک تهیه کردم و جای آن را با XC9572 تعویض کردم.
در صورتی که بخواهید خودتان یک برد XC9572 PCC44 بسازیدمیتوانید به سایت PEK PROJECts به آدرس زیر مراجعه کنید و پروژه آن را دانلود کنید و بسازید:
Click here to see the circuit diagram.
Click here to see the pcb layout.
Click here to see the component layout.
برای برنامه نویسی و برنامه ریزی این قطعات نیاز به بسته نرم افزاریXilinx ISE دارید. این بسته نرم افزاری حاوی برنامه ای به نام iMPACT است که برای برنامه ریزی قطعات ساخت Xilinx بکار میرود.
قطعات FPGA دارای معماری داخلی متفاوتی هستند و مدارات حجیم تری دارند و امکانات بیشتری را ارائه می دهند. بعضی از انواع FPGA دارای امکانات بسیار زیادی هستند و حتی می توانند یک پردازنده را با تمام امکانات برونی مورد نیاز خود را پیاده نمایند. البته پیاده سازی پردازنده ها در داخل قطعات FPGA دو نوع است. یکی Soft-Core Processor نامیده می شود و کاملا بوسیله ی زبانهای VHDL و VErilog برنامه نویسی می شود. اما بعضی از انواع FPGA دارای یک هسته پردازنده از پیش تعریف شده در داخل خود هستند که به آنها Hard-Core processor گفته میشود. XILINX یک soft processor core به نام MicroBlaze برای FPGA های خود عرضه کرده است. شرکت altera یک soft processor core به نام Nios II برای قطعات FPGA ساخت خود عرضه کرده است. در تحقیق زیر نحوه استفاده از NIOS II بیان شده است.
معمولا FPGA پس از برنامه ریزی تا زمان وصل بودن منبع تغذیه عمل می کند اما برنامه آن با قطع شدن منبع تغذیه پاک می شود، از این جهت نیاز به حافظه جانبی flash یا Rom برای نگهداری برنامه مورد نیاز است. برنامه در داخل حافظه جانبی نگهداری می شود و در هنگام وصل شدن منبع تغذیه باید قطعه FPGA از روی آن boot شود.
یکی از بردهای آموزشی خوب برای FPGA که من آزمایش کردم و از آن راضی هستم، برد آموزشی AVA3S400 ساخت شرکت رهپویان علم و صنعت و آوا است. این برد از تراشه خانواده SPARTAN 3 ساخت شرکت XILINX بهره می برد که شماره آن XC3S400 است. برای دیدن مشخصات و خرید این برد به آدرس زیر مراجعه کنید: