विषयसूची:

VHDL में एक साधारण कैश नियंत्रक का डिज़ाइन: 4 चरण
VHDL में एक साधारण कैश नियंत्रक का डिज़ाइन: 4 चरण

वीडियो: VHDL में एक साधारण कैश नियंत्रक का डिज़ाइन: 4 चरण

वीडियो: VHDL में एक साधारण कैश नियंत्रक का डिज़ाइन: 4 चरण
वीडियो: How to Implement VHDL design of a four bit counter on an FPGA 2024, नवंबर
Anonim
VHDL में एक साधारण कैश नियंत्रक का डिज़ाइन
VHDL में एक साधारण कैश नियंत्रक का डिज़ाइन

मैं यह निर्देश योग्य लिख रहा हूं, क्योंकि मुझे कुछ संदर्भ VHDL कोड सीखने और कैशे नियंत्रक को डिजाइन करना शुरू करने में थोड़ा मुश्किल लगा। इसलिए मैंने स्क्रैच से खुद को कैशे कंट्रोलर डिज़ाइन किया, और FPGA पर इसका सफलतापूर्वक परीक्षण किया। मैंने यहां एक साधारण प्रत्यक्ष मैप किए गए कैश नियंत्रक को प्रस्तुत किया है, साथ ही कैश नियंत्रक का परीक्षण करने के लिए एक संपूर्ण प्रोसेसर-मेमोरी सिस्टम का मॉडल तैयार किया है। मुझे आशा है कि आप लोगों को यह निर्देश योग्य अपने स्वयं के कैश नियंत्रकों को डिज़ाइन करने के संदर्भ के रूप में उपयोगी लगेगा।

चरण 1: निर्दिष्टीकरण

विशेष विवरण
विशेष विवरण

ये कैश कंट्रोलर के मुख्य विनिर्देश हैं जिन्हें हम डिजाइन करने जा रहे हैं:

  • डायरेक्ट मैप किया गया। (एसोसिएटिव मैप्ड कैश कंट्रोलर की तलाश में इस लिंक पर जाएं)
  • सिंगल-बैंक्ड, ब्लॉकिंग कैश।
  • राइट-थ्रू पॉलिसी ऑन राइट हिट्स।
  • नो-राइट एलॉट या राइट अराउंड पॉलिसी ऑन राइट मिस।
  • कोई बफ़र या अन्य अनुकूलन नहीं लिखें।
  • टैग ऐरे शामिल है।

इसके अलावा, हम एक कैश मेमोरी और एक मेन मेमोरी सिस्टम भी डिजाइन करेंगे।

कैश मेमोरी के डिफ़ॉल्ट (कॉन्फ़िगर करने योग्य) विनिर्देश:

  • 256 बाइट्स सिंगल-बैंक्ड कैश।
  • 16 कैश लाइन, प्रत्येक कैश लाइन (ब्लॉक) = 16 बाइट्स।

मुख्य मेमोरी के विनिर्देश:

  • सिंक्रोनस रीड / राइट मेमोरी।
  • मल्टी-बैंक्ड इंटरलीव्ड मेमोरी - चार मेमोरी बैंक।
  • प्रत्येक बैंक का आकार = 1 kB प्रत्येक। अत: कुल आकार = 4 kB।
  • 10-बिट एड्रेस बस के साथ वर्ड (4 बाइट्स) एड्रेसेबल मेमोरी।
  • पढ़ने के लिए उच्च बैंडविड्थ। एक घड़ी चक्र में डेटा चौड़ाई = 16 बाइट्स पढ़ें।
  • डेटा चौड़ाई = 4 बाइट्स लिखें।

नोट: यदि आप 4-वे साहचर्य कैश नियंत्रक डिज़ाइन की तलाश कर रहे हैं, तो मेरे नए निर्देश की जाँच करें

चरण 2: संपूर्ण प्रणाली का RTL दृश्य

संपूर्ण प्रणाली का RTL दृश्य
संपूर्ण प्रणाली का RTL दृश्य

शीर्ष मॉड्यूल का पूर्ण RTL प्रतिनिधित्व चित्र (प्रोसेसर को छोड़कर) में दिखाया गया है। बसों के लिए डिफ़ॉल्ट चश्मा हैं:

  • सभी डेटा बसें 32-बिट बसें हैं।
  • पता बस = 32-बिट बस (लेकिन मेमोरी द्वारा यहां केवल 10 बिट्स को संबोधित किया जा सकता है)।
  • डेटा ब्लॉक = 128 बिट्स (पढ़ने के लिए वाइड बैंडविड्थ बस)।
  • सभी घटक एक ही घड़ी द्वारा संचालित होते हैं।

चरण 3: परीक्षण पर्यावरण

शीर्ष मॉड्यूल का परीक्षण एक परीक्षण बेंच का उपयोग करके किया गया था, जो कि केवल एक गैर-पाइपलाइन प्रोसेसर का मॉडल करता है (क्योंकि पूरे प्रोसेसर को डिजाइन करना बिल्कुल भी आसान नहीं है !!) टेस्ट बेंच मेमोरी को बार-बार पढ़ने/लिखने के लिए डेटा अनुरोध उत्पन्न करता है। यह विशिष्ट "लोड" और "स्टोर" निर्देशों का मजाक उड़ाता है, जो एक प्रोसेसर द्वारा निष्पादित सभी कार्यक्रमों में सामान्य है। परीक्षण के परिणामों ने कैश नियंत्रक की कार्यक्षमता को सफलतापूर्वक सत्यापित किया। देखे गए परीक्षण आँकड़े निम्नलिखित हैं:

  • सभी रीड / राइट मिस और हिट सिग्नल सही ढंग से उत्पन्न हुए थे।
  • सभी रीड/राइट डेटा ऑपरेशन सफल रहे।
  • कोई डेटा असंगति/असंगतता समस्याओं का पता नहीं चला।
  • डिज़ाइन को मैक्सम के लिए सफलतापूर्वक सत्यापित किया गया था। संचालन की घड़ी आवृत्ति = Xilinx Virtex-4 ML-403 बोर्ड (संपूर्ण प्रणाली) में 110 मेगाहर्ट्ज, अकेले कैश नियंत्रक के लिए 195 मेगाहर्ट्ज।
  • मुख्य मेमोरी के लिए ब्लॉक रैम का अनुमान लगाया गया था। अन्य सभी सरणियों को LUTs पर लागू किया गया था।

चरण 4: संलग्न फ़ाइलें

इस ब्लॉग के साथ निम्नलिखित फाइलें यहां संलग्न हैं:

  • कैश कंट्रोलर, कैशे डेटा एरे, मेन मेमोरी सिस्टम की वीएचडी फाइलें।
  • परीक्षण बेंच।
  • कैश नियंत्रक पर दस्तावेज़ीकरण।

टिप्पणियाँ:

  • यहां प्रस्तुत कैश नियंत्रक के विनिर्देशों की पूरी समझ के लिए दस्तावेज़ीकरण के माध्यम से जाएं।
  • कोड में किसी भी बदलाव की अन्य मॉड्यूल पर निर्भरता होती है। इसलिए बदलाव सोच-समझकर करना चाहिए। मेरे द्वारा दिए गए सभी टिप्पणियों और शीर्षकों पर ध्यान दें।
  • यदि किसी कारण से, मुख्य मेमोरी के लिए ब्लॉक रैम का अनुमान नहीं लगाया जाता है, तो मेमोरी के आकार को कम करें, इसके बाद फाइलों में एड्रेस बस की चौड़ाई में बदलाव करें और इसी तरह। ताकि वही मेमोरी या तो एलयूटी या डिस्ट्रीब्यूटेड रैम पर लागू की जा सके। इससे रूटिंग समय और संसाधनों की बचत होगी। या, विशिष्ट FPGA दस्तावेज़ीकरण पर जाएँ और ब्लॉक RAM के लिए संगत कोड खोजें और तदनुसार कोड संपादित करें, और उसी पते की बस चौड़ाई विनिर्देशों का उपयोग करें। Altera FPGAs के लिए समान तकनीक।

सिफारिश की: