گام دوم:
گام دوم : طراحي معماري سختافزار
بر اساس ويژگيها و مشخصات تعريف شده سختافزار در گام اول٬ ميتوان ساختار اجزاي تشکيل دهنده و معماري سختافزار را طراحي کرد ٬ در اين گام با توجه به اين که مشخصات سختافزار کاملا معيين شدهاند بايد اينترفيس ارتباطي و اجزاي تشکيل دهنده آن را مشخص کرد.
در مرحله اول به اينترفيس ارتباطي شمارنده برنامهپذير ميپردازيم٬ همانطور که در شکل 2 مشاهده ميکنيد٬ اين شمارنده با مشخصات تعريف شده در گام اول به شش سيگنال ورودي و يک سيگنال خروجي نياز دارد:

شکل 2 : نمايي از سيگنالهاي ورودي و خروجي شمارنده برنامه پذير
عملکرد هريک از اين سيگنالهاي عبارتند از :
Reset : فعال شدن سيگنال اين pin حالت مدار ترتيبي شمارنده برنامه پذير را به حالت شناختهشدهي اوليه ميبرد.
Ceb : سرنام Chip Enable Bit که زماني که سيگنال روي اين pin مقدار 0 داشته باشد٬ شمارنده فعال خواهد بود.
Data_in : ورودي 8 بيتي داده به شمارنده جهت بارگزاري در ثباتهاي داخلي آن است.
Write : فعال شدن سيگنال اين pin ٬ امکان نوشتن بر روي ثبات سه بيتي CWR را از سه بيت ابتدايي Data_in فراهم ميکند
Load : فعال شدن سيگنال اين pin٬ امکان بارگزاري ثبات شمارنده را از خطوط ورودي Data_in فراهم ميکند٬ اين مقدار بارگزاري شده نقطه آغاز شمارش افزايشي/کاهشي شمارنده خواهد بود.
Data_out : پين سيگنال خروجي شمارنده برنامهپذير
Clk : پين ورودي کلاک به شمارنده برنامهپذير
جهت ذخيره سازي مقدار CWR به يک ثبات سه بيتي نياز داريم که بايد در معماري شمارنده آن را در نظر بگيريم٬ علاوه بر اين چون در مد 01 و 10 شمارنده به طور مداوم با مقدار بارگزاري اوليه٬بارگزاري شده و شروع به شمارش مجدد ميکند٬ به يک ثبات هشت بيتي ديگر نيز نياز داريم که بتوان مقدار بارگزاري اوليه را در آن ذخيره کرد. اين ثبات با نام Latch در شکل 3 نشان داده شده است. که در توصيف مدار latch_counter نام گرفته است.
شکل 3 ٬ معماري داخلي شمارنده برنامهپذير
پس از عناصر ذخيره سازي٬ يک مدار ترتيبي شمارنده هشت بيتي که توانايي شمارش افزايشي و کاهشي را داشته باشد نيز در نظر گرفته شده است که با توجه به حالتهاي اين مدار ترتيبي يک مدار ترکيبي decoder براي توليد خروجي مورد نظر بايد طراحي شود.
با توجه به شکل 3 ٬ معماري شمارنده برنامهپذير تا آنجايي که ممکن بود به اجزاي کوچکتر شکسته شد تا طراحي آن ساده تر گردد.