2008-10-27 16 views
5

मैं ऐसे डिवाइस के साथ काम कर रहा हूं जिसके लिए मुझे 16 बिट सीआरसी उत्पन्न करने की आवश्यकता है।सीआरसी प्रीसेट और अवशेष

डिवाइस के लिए डेटापत्रक यह निम्नलिखित सीआरसी परिभाषा की जरूरत है कहते हैं:

 
CRC Type Length Polynomial   Direction Preset  Residue 
CRC-CCITT 16 bits x16 + x12 + x5 + 1 Forward FFFF (16) 1D0F (16) 

जहां पूर्व निर्धारित = FFFF (16 बिट) और अवशेष = 1D0F (16 बिट)

मैं एक सीआरसी एल्गोरिथ्म के लिए खोज की और यह लिंक पाया: http://www.lammertbies.nl/comm/info/crc-calculation.html

इसमें दोनों हैं। सीआरसी-सीसीआईटीटी (0xFFFF) सीआरसी-सीसीआईटीटी (0x1D0F)

प्रीसेट और अवशेष के बीच क्या अंतर है?

+0

बूस्ट एक अच्छा सीआरसी कार्यान्वयन है, आप कहीं सी ++ का उपयोग कर रहे। –

उत्तर

0

अंतर यह है कि एल्गोरिदम दो मानों के साथ क्या करता है। मैंने बस एक सीआरसी एल्गोरिदम खुद को देखा और यह बहुत आसान लग रहा है।

प्रीसेट वह मान है जो इसके साथ शुरू होता है और अवशेष अंत में मूल्य के साथ XOR'd है।

अब कारण प्रीसेट और अवशेष के लिए विशेष मान चुनने के लिए, जो मुझे नहीं पता।

0

कुछ ठीक नहीं है।

आप 16-बिट सीआरसी की तलाश में हैं, लेकिन आपने 24-बिट प्रीसेट और अवशेष निर्दिष्ट किया है। जिस डिवाइस को आप देख रहे हैं उसके लिए डेटाशीट के लिए एक लिंक पोस्ट करें।

सीआरसी जानकारी के लिए सबसे अच्छा स्रोत है, वैसे, है Ross Williams' guide to CRC.

संपादित करें: आह हां, मैं देख रहा हूँ "24-बिट" पूर्व निर्धारित बस तालिका के स्वरूपण था।

4

आप सीआरसी अपने संदेश में खिलाने से पहले पूर्व निर्धारित साथ रजिस्टर आरंभ कर देगा।

अवशेषों में सीआरसी संदेश के माध्यम से खिला के बाद रजिस्टर, प्लस अपनी सही सीआरसी क्या छोड़ दिया जाना चाहिए है।

यदि आप सिर्फ एक संदेश भेजना चाहते हैं, तो आपको अवशेष मूल्य दिखाई नहीं देगा। लेकिन जब डिवाइस आपके संदेश + सीआरसी को फिर से सीआरसी एल्गोरिदम के माध्यम से चलाता है, तो इसमें कोई ट्रांसमिशन त्रुटियां नहीं होने पर 0x1D0F का अंतिम मान दिखाई देगा।


आप डिवाइस को शामिल किए बिना स्वयं को यह भी प्रदर्शित कर सकते हैं। यह आपको यह पुष्टि करने में मदद कर सकता है कि आपका एल्गोरिदम कुछ ऐसा कर रहा है, कम से कम, एक सीआरसी जैसा दिखता है।

  • सबसे पहले, अपने संदेश के लिए सीआरसी की गणना करें।
  • अपना संदेश और उस सीआरसी को संलग्न करें, फिर पूरी चीज को एक नई सीआरसी गणना के माध्यम से पास करें (पहले प्रीसेट मान पर रीसेट करना याद रखें।)
  • यदि सभी ठीक हो गए हैं, तो आपके सीआरसी रजिस्टर में अवशेष मूल्य होना चाहिए।

सबसे अच्छा सीआरसी स्पष्टीकरण मैंने कभी मिल गया है यहाँ है:

http://www.repairfaq.org/filipg/LINK/F_crc_v31.html#CRCV_001

संबंधित मुद्दे