گام اول:
گام اول: تعيين کردن مشخصات
در اولين گام بايد تعيين کنيم که سختافزار مورد نياز چه ويژگيها و مشخصاتي بايد داشته باشد٬ حالتهاي کاري آن به چه صورت است و چه عملکردي در هر حالت نسبت به وروديهاي مختلف بايد از خود نشان دهد.
در مثال طراحي اين مقاله٬ ما يک شمارنده برنامهپذير را هدف طراحي قرار دادهايم و در گام اول مشخصات آن را تعيين ميکنيم. اين شمارنده در واقع يک تايمر 8 بيتي است که در سه مد علمياتي کار ميکند اين سه مد عبارتند از تايمر one-shot ٬ pulse generator و 50% waveform generator که در ادامه به جزئيات تک تک اين سه مد کاري اشاره خواهد شد. در هر مد کاري٬ پيش از آغاز به کار شمارنده عددي داخل آن بارگزاري ميشود تا محدوده شمارش و توليد خروجي مطلوب تعيين گردد. اين شمارنده جهت مشخص کردن مد کاري خود از يک ثبات داخلي استفاده ميکند که Control_word_register نام گذاري شده٬ با ارزشترين بيت اين ثبات سه بيتي٬ وصعيت فعال بودن يا غير فعال بودن شمارنده را مشخصي ميکند و دو بيت کم ارزشتر ديگر٬ مد کاري شمارنده را تعيين ميکنند٬ با توجه به شکل 1 هر گاه بيت سوم اين ثبات 1 باشد٬ شمارنده فعال خواهد شد.

شکل 1: ثبات control_word_register و بيتهاي تشکيلدهنده آن
هريک از مدهاي کاري شمارنده عبارتند از:
مد 00 – One-Shot Timer : در اين مد ابتدا شمارنده با يک عدد هشت بيتي بارگزاري شده سپس سه بيت 100 داخل control_world_register نوشته ميشوند تا شمارنده را در مد 00 فعال نمايد٬ سپس شمارنده در هر لبه بالا رونده کلاک شروع به شمارش ميکند تا زماني که عدد بارگزاري شده به مقدار FF برسد و يک کلاک پالس 1 در خروجي اعمال شود. پس از اينکه در خروجي يک پالس 1 نوشته شد (One-Shot) شمارنده به صورت خودکار با ارزشترين بيت CWR (سرنام Control_word_register) را 0 ميکند و شمارنده غير فعال ميشود. براي ادامه کار One-shot Times ٬ با ارزشترين بيت CWR بايد مجددا 1 شده تا شمارنده پس از شمارش مجدد ٬ يک پالس 1 ديگر در خروجي ارائه کند.
مد 01- pulse generator: در اين مد نيز ابتدا شمارنده با يک عدد هشت بيتي بارگزاري شده و سپس مقدار 101 داخل CWR نوشته ميشود تا شمارنده را در مد 01 فعال کند٬ سپس شمارنده با لبه مثبت کلاک شروع به شمارش کرده تا زماني که مقدار بارگزاري شده به FF برسد٬ سپس در خروجي يک پالس 1 ظاهر شده و شمارنده مجددا از عددي که در ابتدا داخل آن بارگزاري شده بود شروع به شمارش ميکند. بر خلاف مد 00 در اين مد شمارنده پس از رسيدن به مقدار FF غير فعال نشده و از مقدار بارگزاري شده مجددا شروع به شمارش ميکند تا به طور پيوسته با رسيدن به مقدار FF يک پالس 1 در خروجي توليد کند.
مد 10- 50% Waveform generator : اين مد توليد کننده شکل موجهاي متقارن نامگذاري شده است٬ شمارنده ابتدا توسط يک عدد باينري هشت بيتي بارگزاري ميشود سپس برخلاف دو مد 00و 01 شمارنده به صورت کاهشي از عدد بارگزاري شده شروع به شمارش کرده تا زماني که به نصف مقدار بارگزاري شده برسد٬ پس از آن خروجي 1شده و تا زماني که شمارنده به عدد صفر برسد خروجي همچنان 1 ميماند. پس از اينکه شمارنده به عدد صفر رسيد ٬ خروجي 0 شده و شمارنده به صورت خودکار مجددا بارگذاري شده و شروع به شمارش کاهشي ميکند. در اين مد شمارنده تا زماني که باارزشترين بيت CWR به صورت دستي 1 نشود٬ متوقف نخواهد شد و به طور پيوسته شکل موج متقارن و فرکانسي معادل با عددي که در شمارنده بارگزاري شده است توليد ميکند.
مد 11 نيز در اين طراحي استفاده نشده است.