क्या ओपन सोर्स लाइब्रेरीज़ VHDL के लिए मौजूद हैं जिस तरह से वे C ++ या अजगर के लिए करते हैं?


11

जब मैं C ++ या अजगर में एक समस्या से संपर्क कर रहा हूं, तो कई पुस्तकालय हैं जो मौजूद हैं जो मेरे कोड के भारी उठाने का काम करते हैं। मैं ग्नू GSL , BOOST या C ++ के लिए FFTW और अजगर के लिए NumPy या SciPy के बारे में सोच रहा हूं । कई मायनों में, यह तथ्य कि ये संसाधन मौजूद हैं, इन संबंधित भाषाओं में कोडिंग को सार्थक बनाते हैं, क्योंकि लाइब्रेरी आपको स्क्रैच से सभी निम्न स्तर की चीजों को फिर से लिखने से रोकती हैं।

IEEE मानक लाइब्रेरी केवल बहुत मूल बातें, जैसे कि डेटा प्रकार (C मानक कामों के समान) को कवर करने के लिए लगती हैं।

ऐसा लगता है कि वीएचडीएल में, आप कुछ "आईपी कोर" खरीद / पा सकते हैं जो एक ओपन सोर्स लाइब्रेरी का उपयोग करने के बजाय एक समस्या को हल करेंगे। अजगर में, अगर मैं एक सीरियल डिवाइस से बात करना चाहता हूं, तो मैं बस import serialऔर मैं मूल रूप से किया जाता हूं। VHDL में मैं या तो स्क्रैच से एक सीरियल प्रोटोकॉल लिखना बंद कर दूंगा, या मुझे विभिन्न रिपॉजिटरी पर चारों ओर गूगल करना होगा जब तक कि मुझे कोई ऐसा व्यक्ति नहीं मिला, जिसने किसी तरह का काम किया हो। मैं तो कोड में बिट्स को अपने प्रोजेक्ट में शामिल करूंगा, बजाय इसके कि कुछ को शामिल किया जाए और उसे कॉल किया जाए। इसी तरह, अगर मैं एक FFT प्रदर्शन करना चाहता हूं, तो मैं Google के माध्यम से VHDL में FFT के उदाहरण पा सकता हूं, लेकिन FFTW जैसा कुछ सरल नहीं है जो मुझे मिल सकता है।

क्या कोई व्यापक ओपन सोर्स लाइब्रेरी उपलब्ध है जिसे मैं अपनी परियोजनाओं में आयात कर सकता हूं? हर कोई एक ही चीज़ के लिए अपने कोड को रोल क्यों करता है?


2
क्या आपने opencores.org खोजा है?
मार्कयू

3
VHDL सत्यापन पुस्तकालयों के लिए, osvvm.org
जिम लेविस

Opencores, आप विभिन्न स्रोतों से पुस्तकालय भी खरीद सकते हैं। आप opencores से अधिकांश कोर के साथ कुछ समय बिताएंगे क्योंकि अधिकांश अच्छी तरह से प्रलेखित नहीं हैं।
वोल्टेज स्पाइक

जवाबों:


14

मैं ' द पीओसी लाइब्रेरी ' में एक डेवलपर और अनुरक्षक हूँ । हम पैकेजों (नए प्रकारों और कार्यों का संग्रह) और मॉड्यूल से मिलकर ऐसी लाइब्रेरी प्रदान करने का प्रयास करते हैं। यह सामान्य पोजोस, अंकगणित, क्रॉस-क्लॉक घटकों, कम गति-आई / ओ घटकों और एक ईथरनेट / आईपी / यूडीपी स्टैक (अगली रिलीज) के साथ आता है।

जैसा कि @crgrace में वर्णित है, यह मॉड्यूल डिजाइन करने के लिए काफी जटिल है, जो:

  • कई प्लेटफार्मों पर काम करते हैं
  • अधिकांश विक्रेता उपकरण श्रृंखलाओं का समर्थन करें
  • ओवरहेड / कम ओवरहेड जोड़ें

हमारी लाइब्रेरी में विक्रेताओं, उपकरणों और यहां तक ​​कि डिवाइस सबफ़ैमिली को सही कोड या एक अनुकूलित कार्यान्वयन चुनने के लिए अलग करने के लिए एक आंतरिक कॉन्फ़िगरेशन तंत्र (PoC.config) है। यह कुछ बिंदुओं पर संश्लेषण और सिमुलेशन कोड के बीच अंतर भी करता है।

उदाहरण के लिए PoC.fifo_cc_gotएक 'सामान्य घड़ी' (cc) इंटरफेस के साथ एक FIFO है और पेंडो को नियंत्रित करने के लिए संकेत मिला / मिला है। पेंडो चौड़ाई, गहराई, भराव-स्थिति बिट्स और कार्यान्वयन प्रकार में विन्यास योग्य है। एक LUT- आधारित RAM या On-Chip-RAM (ऑसम) कार्यान्वयन प्रकार चुनना संभव है। यदि इस फीटो को ऑल्टर के लिए ऑस्ट्रम विकल्प के साथ संश्लेषित किया जाता है, तो यह अल्टसुंक्रैम का उपयोग करता है; यदि Xilinx चुना जाता है, तो यह एक जेनेरिक BlockRAM विवरण का उपयोग करता है और स्पष्ट ले जाने वाले इंस्टालेशन द्वारा पॉइंटर अंकगणित को लागू करता है (Xilinx XST इष्टतम समाधान नहीं ढूंढता है, इसलिए यह मैन्युअल रूप से किया जाता है)।

Clock डिपेंडेंट क्लॉक ’(dc) और इंडिपेंडेंट क्लॉक (ic) इंटरफेस के साथ 2 अन्य फीफो टाइप हैं। इसलिए यदि सामान्य फ़ार्मो से क्रॉस-क्लॉक फ़ॉफ़ो (PoC.fifo_ic_got) पर स्विच करना आवश्यक है, तो इकाई का नाम बदलें और एक घड़ी जोड़ें और दूसरे घड़ी डोमेन के लिए रीसेट करें, बस।

मुझे लगता है कि यह साबित होता है, सामान्य मॉड्यूल लिखना संभव है, जो कई प्लेटफार्मों पर काम करते हैं और विभिन्न उपकरणों में संकलन करते हैं (स्पार्टन-> वीरटेक्स, साइक्लोन -> स्ट्रेटिक्स; आईएसई, विवाडो, क्वार्टस)।

PoC के अलावा, अन्य खुले स्रोत पुस्तकालय हैं:


GitHub पर "डिस्कवर फ्री और ओपन सोर्स सिलिकॉन" ( FOSSi ) प्रोजेक्ट्स सभी GitHub प्रोजेक्ट्स का एक बड़ा डेटाबेस है जो मुख्य रूप से , , , या किसी अन्य महत्वपूर्ण हार्डवेयर विवरण भाषा ( ) का उपयोग करता है।

यह सभी देखें:


+1 यह दिखाने के लिए कि आपने क्या किया है और दूसरों ने क्या किया है। अच्छी लंबी सूची है।
मिस्टर मिस्टीर

3

ओपन सोर्स लाइब्ररीज़ जैसे कि आप बताते हैं कि वीएचडीएल या वेरिलोग के लिए उतने उपयोगी नहीं होंगे जितने कि वे एक सामान्य प्रयोजन प्रोग्रामिंग भाषा के लिए हैं। ऐसा इसलिए है क्योंकि आप किसी दिए गए फ़ंक्शन को कैसे कार्यान्वित करते हैं, यह बहुत कुछ निर्भर करता है कि आप क्या करने की कोशिश कर रहे हैं। कोड जो के लिए अच्छा है और FPGA शायद एक ASIC और इसके विपरीत के लिए इतना अच्छा नहीं है।

इसके अलावा, चूंकि हम हार्डवेयर का वर्णन कर रहे हैं, एक फ़ंक्शन जो एफएफटी करता है उसे शब्द की चौड़ाई और घड़ी और रीसेट रणनीति के रूप में ऐसी बारीकियों की आवश्यकता होगी कि यह आपके हाथों को बाँध ले और आपके पूरे डिजाइन को बाधित करे। यदि आप फ़ंक्शन को बहुत लचीला बनाते हैं, तो यह बहुत अधिक ओवरहेड होगा।

अंत में, अपने निष्पादन योग्य के आकार को देखें, जब आप उदाहरण के लिए C में बहुत सारे लाइब्रेरी शामिल करते हैं। वहां पर एक टन फूला हुआ है। यह सॉफ्टवेयर विकास (ज्यादातर समय) के लिए मायने नहीं रखता है, लेकिन FPGA और विशेष रूप से ASIC विकास के लिए बहुत मायने रखता है। वहाँ कोई मतलब नहीं उपरिव्यय का एक गुच्छा synthesizing आप की जरूरत नहीं है।

तो लब्बोलुआब यह है कि ऐसी कोई लाइब्रेरी नहीं है, और आपका वर्तमान दृष्टिकोण ध्वनि है।


वैकल्पिक (आईपी) कोर जनरेटर भी विक्रेता लॉक और परिणामस्वरूप ब्लॉट के स्काइला और चॉबीरिस जोखिम प्रदान करते हैं। FPGA और ASIC कैपेसिटी ब्लोट को सपोर्ट करने के लिए काफी बड़ी हो गई हैं, इस मुद्दे को तब लागत और परीक्षण, ब्लोट मानकीकरण (जैसे AMBA AXI4) द्वारा मदद मिली है। ट्रेड टू टाइम टू मार्केट बनाम "ओवरहेड आपको जरूरत नहीं है" पहले से ही पूरे उद्योगों द्वारा बनाया गया है। हार्डवेयर डिज़ाइन के बजाय बिल्डिंग ब्लॉकों का उपयोग करके सिस्टम डिज़ाइन, उत्तरार्द्ध VHDL की खैरात।
user8352

आपका तीसरा पैराग्राफ इस बात से काफी अनभिज्ञ है कि कंपाइलर और सिंथेसिस टूल कैसे काम करते हैं - टूल्स को उन चीजों को त्यागना चाहिए जो आवश्यक नहीं हैं और जो परिणाम उपयोग नहीं किए गए हैं, संभवतः एक उच्च स्तरीय भाषा पुस्तकालय की तुलना में डिजिटल लॉजिक सेटिंग में भी मोरसो, जहां कोई स्थानीय हो सकता है वैरिएबल और मेमोरी आवंटन जो लाइब्रेरी एब्स्ट्रक्शन के ओवरहेड हैं, खासकर अगर यह गतिशील रूप से जुड़ा हुआ है।
क्रिस स्ट्रैटन 3

2

वीएचडीएल और वेरिलोग वर्णनात्मक भाषा हैं और वे हार्डवेयर ब्लॉक का वर्णन करते हैं। C ++ में एक सीरियल ड्राइवर VHDL / Verilog में एक सीरियल आईपी में अनुवाद कर सकता है।

opencores.org अब तक का सबसे बड़ा ओपन-सोर्स डेटाबेस है।

खोज की प्रक्रिया को सुविधाजनक बनाने के लिए, डाउनलोड और कोड ब्राउज़िंग (जीथब के माध्यम से) आप इस आधुनिक इंटरफ़ेस का उपयोग कर सकते हैं:

http://freerangefactory.org/cores.html

उदाहरण के लिए, यदि आप धारावाहिक खोजते हैं, तो आप यहां समाप्त हो सकते हैं:

http://freerangefactory.org/cores/communication_controller/serial_uart_2/index.html

और सीधे GitHub में कोड पर जाएं। वहां आप देखेंगे कि आप बहुत आसानी से सीरियल मॉड्यूल को इंस्टेंट कर सकते हैं और अपने स्वयं के सर्किट को इससे जोड़ सकते हैं और डेटा भेजना और प्राप्त करना शुरू कर सकते हैं। यह सी ++ में धारावाहिक के रूप में सरल है।

आशा है कि ये आपकी मदद करेगा।


0

इस तरह की चीज़ के लिए मैं पहली साइट पर जाता हूं (जैसा कि @MarkU उल्लेख किया गया है) opencores.org है।

उदाहरण के लिए, बीएसडी लाइसेंस के तहत जारी वीएचडीएल में लिखा गया एक एफएफटी इंजन है । स्थिति "बीटा" है।


ओपी पूछ नहीं है कि क्या है। वह या वह opencores.org को देखने के बारे में जानता है। एक पैरामीटर एफएफटी इंजन पायथन में एक मानक गणित पुस्तकालय को आयात करने और इसका उपयोग करने से बहुत दूर है। ओवरहेड के कारण हार्डवेयर में "मिडलवेयर" जैसी कोई चीज नहीं है।
क्रैग्रेस

0

सत्यापन के लिए, ओपन सोर्स वीएचडीएल सत्यापन पद्धति (ओएसवीवीएम) है।
OSVVM एक व्यापक, उन्नत VHDL सत्यापन कार्यप्रणाली है जो कार्यात्मक कवरेज के कार्यान्वयन को आसान बनाता है, यादृच्छिक यादृच्छिक, और बुद्धिमान कवरेज यादृच्छिककरण (एक बुद्धिमान टेस्टबेंच पद्धति)। यह साझा ट्रांसक्रिप्ट फ़ाइलों, त्रुटि रिपोर्टिंग, लॉग्स (सशर्त मुद्रण) और मेमोरी मॉडलिंग के कार्यान्वयन की सुविधा भी देता है।

OSVVM की वेबसाइट और ब्लॉग http://osvvm.org पर हैं । पैकेज github पर भी उपलब्ध हैं: https://github.com/JimLewis/OSVVM

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.