ر بسیاری از سیستم‌های مهندسی، اجرای مستقیم توابع ریاضی پیچیده همیشه بهترین گزینه برای شبیه‌سازی یا پیاده‌سازی روی سخت‌افزار نیست. در چنین شرایطی می‌توان از Lookup Table برای تقریب تابع استفاده کرد. سیمولینک علاوه بر جدول‌های معمولی، بلوکی با عنوان Lookup Table Dynamic دارد که امکان تغییر داده‌های جدول را در حین اجرای شبیه‌سازی فراهم می‌کند. همچنین بلوک‌های Sine و Cosine می‌توانند توابع مثلثاتی را با رویکرد مبتنی بر جدول جستجو و با پشتیبانی از Fixed-Point پیاده‌سازی کنند.

مفهوم جدول جستجوی دینامیک

بلوک Lookup Table Dynamic برای تقریب یک تابع یک‌بعدی با استفاده از داده‌های Breakpoint و Table Data طراحی شده است.

تفاوت اصلی این بلوک با Lookup Tableهای معمولی در این است که داده‌های جدول به‌صورت ورودی به بلوک داده می‌شوند. بنابراین می‌توان داده‌های مربوط به محور و خروجی جدول را در طول اجرای مدل تغییر داد، بدون اینکه لازم باشد شبیه‌سازی متوقف شود.

این ویژگی زمانی اهمیت دارد که رفتار سیستم در طول زمان تغییر کند یا جدول مورد استفاده توسط یک بخش دیگر از مدل به‌روزرسانی شود.

ساختار Lookup Table Dynamic

این بلوک اساساً با سه دسته اطلاعات سروکار دارد:

  • ورودی اصلی که مقدار مورد جستجو را مشخص می‌کند.
  • Breakpoint Data که نقاط مرجع جدول را تعیین می‌کند.
  • Table Data که مقدار تابع در نقاط مرجع را نگهداری می‌کند.

Breakpointها باید به‌صورت صعودی و یکتا مرتب شده باشند تا عملیات جستجو به شکل صحیح انجام شود. همچنین داده‌های Breakpoint و Table باید از نظر ساختار با یکدیگر سازگار باشند.

تفاوت جدول دینامیک با جدول معمولی

در یک Lookup Table معمولی، داده‌های جدول معمولاً به‌عنوان پارامترهای بلوک تعریف می‌شوند.

اما در Lookup Table Dynamic، Breakpointها و داده‌های جدول از طریق ورودی‌های بلوک دریافت می‌شوند. در نتیجه می‌توان این داده‌ها را در حین اجرای مدل تغییر داد.

این قابلیت برای مدل‌سازی سیستم‌هایی که مشخصات آن‌ها در طول زمان تغییر می‌کند، اهمیت ویژه‌ای دارد.

تغییر جدول در زمان شبیه‌سازی

یکی از مهم‌ترین کاربردهای Lookup Table Dynamic، زمانی است که مشخصات سیستم شبیه‌سازی‌شده ثابت نیست.

برای مثال، ممکن است مشخصات عملکرد یک تجهیز با تغییر شرایط کاری تغییر کند و لازم باشد جدول جدیدی برای توصیف وضعیت فعلی سیستم به مدل ارائه شود.

در چنین شرایطی می‌توان Table Data جدید را به بلوک منتقل کرد و بدون توقف شبیه‌سازی، رفتار سیستم را بر اساس داده جدید محاسبه کرد.

روش‌های Lookup در جدول دینامیک

Lookup Table Dynamic چند روش برای تعیین خروجی ارائه می‌کند.

در روش Interpolation-Extrapolation، درون محدوده جدول از درون‌یابی خطی استفاده می‌شود و در خارج از محدوده نیز بر اساس داده‌های انتهایی، مقدار برون‌یابی می‌شود.

در روش Interpolation-Use End Values، درون‌یابی داخل محدوده انجام می‌شود اما در خارج از محدوده، مقدار خروجی به مقادیر انتهایی جدول محدود می‌شود.

همچنین روش‌هایی مانند Use Input Nearest، Use Input Below و Use Input Above امکان انتخاب نزدیک‌ترین داده یا داده مجاور نسبت به ورودی را فراهم می‌کنند.

کاربرد جدول دینامیک در مدل‌سازی غیرخطی

Lookup Table Dynamic برای تقریب توابع غیرخطی نیز قابل استفاده است.

به جای اجرای مستقیم یک تابع پیچیده، می‌توان رفتار آن را در مجموعه‌ای از نقاط نمونه‌برداری کرد و سپس این داده‌ها را در جدول قرار داد.

در زمان اجرا، بلوک مقدار مناسب را از جدول پیدا می‌کند یا در صورت نیاز بین نقاط موجود درون‌یابی انجام می‌دهد.

به همین دلیل Lookup Table یکی از روش‌های مهم برای تقریب توابع ریاضی در مدل‌های سیمولینک محسوب می‌شود.

تولید تابع سینوس با Lookup Table

توابع سینوسی در بسیاری از سیستم‌های مهندسی کاربرد دارند، اما در برخی سیستم‌های Embedded یا Fixed-Point، محاسبه مستقیم این توابع ممکن است از نظر سخت‌افزاری پرهزینه باشد.

سیمولینک برای چنین کاربردهایی بلوک Sine را ارائه می‌کند که از رویکرد Lookup Table برای تقریب تابع سینوس استفاده می‌کند.

این بلوک با بهره‌گیری از Quarter-Wave Symmetry می‌تواند حجم داده مورد نیاز برای نمایش تابع را کاهش دهد.

تولید تابع کسینوس

بلوک Cosine نیز ساختاری مشابه Sine دارد.

این بلوک می‌تواند تابع کسینوس را با استفاده از جدول جستجو پیاده‌سازی کند و مانند Sine از تقارن ربع موج برای کاهش حجم اطلاعات مورد نیاز استفاده می‌کند.

این رویکرد به‌خصوص برای پیاده‌سازی توابع مثلثاتی روی سخت‌افزارهایی که منابع محاسباتی محدودی دارند، اهمیت دارد.

تولید هم‌زمان سینوس و کسینوس

در برخی مدل‌ها لازم است سینوس و کسینوس یک سیگنال به‌صورت هم‌زمان در دسترس باشند.

بلوک Sine امکان انتخاب حالتی را فراهم می‌کند که هر دو خروجی سینوسی و کسینوسی را تولید کند. در این حالت می‌توان از یک ساختار جدول مشترک برای تولید هر دو تابع استفاده کرد و از تکرار غیرضروری محاسبات جلوگیری کرد.

این ویژگی در سیستم‌های کنترل موتور، پردازش سیگنال، تبدیل مختصات و کاربردهای الکتریکی بسیار مفید است.

نقش Quarter-Wave Symmetry

تابع سینوس و کسینوس دارای تقارن‌های مشخصی در دوره تناوب خود هستند.

بلوک‌های Sine و Cosine از Quarter-Wave Symmetry استفاده می‌کنند تا لازم نباشد تمام دوره تابع به‌صورت مستقل در جدول ذخیره شود.

در نتیجه می‌توان تنها بخشی از تابع را ذخیره کرد و سایر بخش‌ها را بر اساس تقارن تابع بازسازی کرد.

این روش باعث کاهش حجم جدول و در نتیجه کاهش نیاز به حافظه می‌شود.

تعداد نقاط جدول

تعداد نقاط Lookup Table روی تعادل میان دقت و منابع محاسباتی اثر می‌گذارد.

اگر تعداد نقاط بسیار کم باشد، تقریب تابع ممکن است دقت کافی نداشته باشد. از طرف دیگر، افزایش بیش از حد تعداد نقاط می‌تواند مصرف حافظه را افزایش دهد.

در بلوک Sine و Cosine، MathWorks توصیه می‌کند برای بیشترین کارایی، تعداد نقاط جدول از الگوی مبتنی بر توان‌های دو به‌علاوه یک پیروی کند. این انتخاب می‌تواند برای پیاده‌سازی محاسباتی و HDL مزایایی داشته باشد.

دقت در برابر سرعت

در طراحی یک سیستم مبتنی بر Lookup Table، همیشه میان Accuracy و Computational Speed یک موازنه وجود دارد.

جدول بزرگ‌تر می‌تواند تقریب دقیق‌تری از تابع ایجاد کند، اما حافظه بیشتری نیاز دارد.

جدول کوچک‌تر منابع کمتری مصرف می‌کند، اما ممکن است خطای تقریب افزایش پیدا کند.

بنابراین تعداد نقاط جدول باید بر اساس نیاز واقعی سیستم تعیین شود.

استفاده از Fixed-Point

یکی از کاربردهای مهم Sine و Cosine مبتنی بر Lookup Table، سیستم‌های Fixed-Point است.

در چنین سیستم‌هایی، ذخیره مستقیم مقادیر تابع و استفاده از جدول می‌تواند نسبت به اجرای یک تابع ریاضی پیچیده، برای سخت‌افزار مناسب‌تر باشد.

این ویژگی در سیستم‌های Embedded، کنترل دیجیتال و طراحی‌های FPGA اهمیت ویژه‌ای دارد.

روش CORDIC در محاسبات مثلثاتی

Lookup Table تنها روش تقریبی برای محاسبه توابع مثلثاتی نیست.

در بلوک Trigonometric Function سیمولینک می‌توان برای برخی محاسبات Fixed-Point از روش CORDIC نیز استفاده کرد.

CORDIC یک روش محاسباتی تکراری است که برای پیاده‌سازی توابع مثلثاتی و برخی عملیات مرتبط روی سخت‌افزار بسیار مورد توجه قرار گرفته است. سیمولینک امکان انتخاب روش تقریبی CORDIC را برای برخی توابع مثلثاتی فراهم می‌کند.

مقایسه Lookup و CORDIC

Lookup Table و CORDIC هر دو می‌توانند برای کاهش هزینه محاسباتی توابع مثلثاتی مورد استفاده قرار گیرند، اما ساختار آن‌ها متفاوت است.

در Lookup Table، اطلاعات تابع در حافظه ذخیره می‌شود و خروجی بر اساس داده‌های جدول به دست می‌آید.

در CORDIC، خروجی از طریق یک فرآیند محاسباتی تکراری تولید می‌شود.

بنابراین انتخاب میان این دو روش باید بر اساس منابع حافظه، توان پردازشی، دقت مورد نیاز و معماری سخت‌افزار انجام شود.

Lookup Table و تولید کد

جداول جستجو در فرآیند Code Generation نیز اهمیت زیادی دارند.

ساختار مناسب جدول می‌تواند باعث کاهش عملیات محاسباتی در کد تولیدشده شود. به همین دلیل Breakpointها، نوع داده‌ها، تعداد نقاط و روش Lookup باید با توجه به سخت‌افزار مقصد انتخاب شوند.

در Lookup Table Dynamic نیز MathWorks امکان استفاده از انواع داده مختلف برای Breakpointها و Table Data را فراهم کرده است.

Lookup Table در سیستم‌های FPGA

بلوک‌های Sine و Cosine مبتنی بر جدول می‌توانند برای تولید HDL نیز مورد استفاده قرار گیرند.

در پیاده‌سازی FPGA، نحوه انتخاب تعداد نقاط جدول و ساختار داده می‌تواند بر منابع منطقی و حافظه مورد استفاده تأثیر بگذارد.

با این حال، برای دستیابی به پیاده‌سازی بهینه سخت‌افزاری، بلوک‌های اختصاصی HDL Optimized نیز در محیط HDL Coder وجود دارند.

تأثیر انتخاب داده‌های جدول

کیفیت تابع تولیدشده مستقیماً به کیفیت داده‌های جدول وابسته است.

اگر نقاط نمونه‌برداری به‌اندازه کافی رفتار واقعی تابع را پوشش ندهند، خروجی Lookup Table ممکن است خطای قابل‌توجهی داشته باشد.

بنابراین در طراحی جدول باید محدوده ورودی، تراکم نقاط، تغییرات تابع و میزان دقت مورد نیاز سیستم بررسی شود.

جدول دینامیک در مقابل جدول ثابت

Lookup Table Dynamic زمانی مناسب است که داده‌های جدول باید در طول شبیه‌سازی قابل تغییر باشند.

در مقابل، Lookup Tableهای معمولی زمانی مناسب‌تر هستند که داده‌های جدول مشخص و ثابت باشند و تنها ورودی سیستم در طول شبیه‌سازی تغییر کند.

این تفاوت در انتخاب ساختار مناسب مدل اهمیت زیادی دارد.

مدیریت جدول‌های بزرگ

در پروژه‌های بزرگ، مدیریت داده‌های Lookup Table می‌تواند پیچیده شود.

سیمولینک ابزار Lookup Table Editor را برای ایجاد، ویرایش و مدیریت جدول‌ها ارائه می‌کند. این ابزار امکان مشاهده و مدیریت داده‌های جدول در قالبی مشابه Spreadsheet را فراهم می‌کند و برای جدول‌های چندبعدی نیز امکان مشاهده داده‌ها و نمودارهای مرتبط وجود دارد.

ارتباط با جدول‌های چندبعدی

اگرچه Lookup Table Dynamic یک بلوک یک‌بعدی است، مفهوم آن با جدول‌های چندبعدی ارتباط دارد.

برای مدل‌هایی که تابع به چند متغیر مستقل وابسته است، می‌توان از n-D Lookup Table استفاده کرد. این بلوک امکان تقریب توابع چندمتغیره را با استفاده از داده‌های جدولی فراهم می‌کند.

بنابراین انتخاب میان Lookup Table Dynamic و n-D Lookup Table به تعداد متغیرهای مستقل و نیاز مدل به تغییر داده‌های جدول بستگی دارد.

انتخاب روش مناسب برای توابع مثلثاتی

برای محاسبات معمولی و Floating-Point، استفاده از Trigonometric Function می‌تواند انتخاب ساده و مستقیمی باشد.

اما زمانی که سیستم به Fixed-Point، تولید کد، کاهش هزینه محاسبات یا کنترل دقیق منابع حافظه نیاز دارد، رویکرد Lookup Table می‌تواند مزایای بیشتری داشته باشد.

در چنین شرایطی، باید دقت تقریب و منابع سخت‌افزاری هم‌زمان مورد بررسی قرار گیرند.

جمع‌بندی

Lookup Table Dynamic امکان تقریب یک تابع یک‌بعدی را با داده‌هایی فراهم می‌کند که می‌توانند در طول اجرای شبیه‌سازی تغییر کنند. این ویژگی آن را برای مدل‌سازی سیستم‌های متغیر و شرایطی که جدول عملکرد باید در زمان اجرا به‌روزرسانی شود، به گزینه‌ای کاربردی تبدیل می‌کند.

از طرف دیگر، بلوک‌های Sine و Cosine نشان می‌دهند که Lookup Table فقط برای داده‌های تجربی و روابط غیرخطی نیست، بلکه می‌تواند برای پیاده‌سازی کارآمد توابع ریاضی مانند سینوس و کسینوس نیز مورد استفاده قرار گیرد. استفاده از تقارن ربع موج و قابلیت‌های Fixed-Point می‌تواند حجم حافظه و هزینه محاسباتی را کاهش دهد.

در نتیجه، جدول‌های دینامیک و روش‌های مبتنی بر Lookup Table برای توابع مثلثاتی، ابزارهایی مهم در مسیر حرکت از یک مدل ریاضی ساده به سمت مدل‌های سریع، قابل تنظیم و مناسب برای سیستم‌های Embedded و Real-Time محسوب می‌شوند.

کلیدواژه ها : Lookup Table Dynamic-جدول جستجوی دینامیک-Dynamic Lookup Table-جدول جستجوی پویا-Sine Lookup Table-جدول جستجوی سینوس-Cosine Lookup Table-جدول جستجوی کسینوس-Sine Function-تابع سینوس-Cosine Function-تابع کسینوس-Trigonometric Function-تابع مثلثاتی-Lookup Table-جدول جستجو-Breakpoint-نقطه شکست-Table Data-داده جدول-Interpolation-درون‌یابی-Extrapolation-برون‌یابی-Use Input Nearest-انتخاب نزدیک‌ترین ورودی-Use Input Below-انتخاب مقدار پایین‌تر-Use Input Above-انتخاب مقدار بالاتر-Fixed-Point-ممیز ثابت-Floating-Point-ممیز شناور-Quarter-Wave Symmetry-تقارن ربع موج-CORDIC-الگوریتم کوردیک-Lookup Approximation-تقریب با جدول جستجو-Function Approximation-تقریب تابع-Mathematical Function-تابع ریاضی-Dynamic Table Data-داده جدول پویا-Real-Time Simulation-شبیه‌سازی بلادرنگ-Embedded Systems-سیستم‌های نهفته-Code Generation-تولید کد-FPGA-اف‌پی‌جی‌ای-HDL Code Generation-تولید کد HDL-Table Optimization-بهینه‌سازی جدول-Memory Optimization-بهینه‌سازی حافظه-Computational Efficiency-کارایی محاسباتی-Simulink Lookup Tables-جداول جستجوی سیمولینک-Trigonometric Approximation-تقریب توابع مثلثاتی-Sine Wave Generation-تولید موج سینوسی-Cosine Wave Generation-تولید موج کسینوسی-Digital Signal Processing-پردازش سیگنال دیجیتال-Embedded Control-کنترل سیستم‌های نهفته-Model-Based Design-طراحی مبتنی بر مدل-Real-Time Control-کنترل بلادرنگ-Table-Based Computation-محاسبات مبتنی بر جدول