Τελευταίες 15 φωνές:
Χθες στις 17:10
ειχε κανεις δικτυα Ι σημερα 2-4; θελω να ρωτησω κατι.....
Χθες στις 16:16
σε 3 βδομαδες
Χθες στις 14:43
Βάσεις 2 εργαστήριο πότε δίνουν οι παρατηρητές?
Χθες στις 11:51
o papatsoris simera den irthe sto tei??
Χθες στις 08:34
εγω παλι δεν ενιωσα τιποτα...
Χθες στις 03:33
edwse pono
Χθες στις 03:30
kai oxi mono, 8a pesei o ouranos na sas plakwsei olouss reeeeeeeee
Χθες στις 03:19
θα πεθανετε δαπιτεςςςςςςςς!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Χθες στις 03:11
Είχαμε σεισμό, τον νιώσατε? Στις 3
Χθες στις 03:10
σεισμοοος
21 Μάιος 2012, 21:06
Rock bar 12-2 tongue
21 Μάιος 2012, 20:29
μηπως ξερει καποιος τις μερες και τις ωρες επικοινωνιας του κ. Βοζικη με τους φοιτητες;
20 Μάιος 2012, 19:27
gnorizete kapoio site gia foithtes p na enimerwnei gia foithtika themata? (metaptixiaka, ipotrofies ktl)
20 Μάιος 2012, 18:49
programma gia thn eksetastikh exoume ?
Καλώς ορίσατε, Επισκέπτης. Παρακαλούμε συνδεθείτε ή εγγραφείτε.
Χάσατε το email ενεργοποίησης;
23 Μάιος 2012, 14:28



Σύνδεση με όνομα, κωδικό και διάρκεια σύνδεσης
Μέλη
Σύνολο μελών: 3868
Τελευταίο: john char
Στατιστικά
Σύνολο μηνυμάτων: 73986
Σύνολο θεμάτων: 8584
Σε σύνδεση σήμερα: 66
Σε σύνδεση έως τώρα: 128
(23 Ιανουάριος 2012, 22:01)
Συνδεδεμένοι χρήστες
Μέλη: 10
Επισκέπτες: 39
Συνολικά: 49
Για να γραφτείτε σε κάποια ομάδα μελών, πατήστε εδώ.
Δίοδος
Πίθος
Αναφανδόν
Εύδοξος
Καιρός
Μενού Λέσχης

Πρώτο πιάτο γεύματος

Πίκλες

Κυρίως πιάτο γεύματος

Φασολάδα ή Φακές

Συνοδευτικό γεύματος

Φέτα και ελιές, Σαλάτα, Φρούτο και Γάλα

Κυρίως πιάτο δείπνου

Καλαμαράκια τηγανιτά με πιλάφι ή Σουπιές με χόρτα

Συνοδευτικό δείπνου

Σαλάτα, Φρούτο και Γάλα

Πρώτο πιάτο γεύματος

Μανιταρόσουπα

Κυρίως πιάτο γεύματος

Παστίτσιο ή Κεφτεδάκια, ρύζι και σάλτσα

Συνοδευτικό γεύματος

Σαλάτα, Φρούτο και Φέτα

Κυρίως πιάτο δείπνου

Ομελέτα με πατάτες και μπέικον ή Μακαρόνια φούρνου με τυριά

Συνοδευτικό δείπνου

Κομπόστα, Σαλάτα και Γάλα
Σελίδες: [1] 2 3   Κάτω
Εκτύπωση
Αποστολέας Θέμα: Άσκηση CRC;;;  (Αναγνώστηκε 3668 φορές)
Xaeron
Γενικός Συντονιστής
Πληροφορικής & Επικοινωνιών

*****
Μηνύματα: 3283

If you smell...what Xaeron...is cooking...

Άντρας
στις: 05 Φεβρουάριος 2010, 22:32
0

Έχει κανείς σημειώσεις με κανένα ολοκληρωμένο παράδειγμα του αλγορίθμου CRC, εκτός από τις σημειώσεις/διαφάνειες του κ. Χειλά; Η έστω λυμένη την άσκηση που έχει ο κ. Χειλας.  Huh? Huh? Please, βοήθεια...!  sad

Τελευταία τροποποίηση: 05 Φεβρουάριος 2010, 22:54 από Xaeron Καταγράφηκε

TeiSerron.gr
lafs
Πληροφορικής & Επικοινωνιών

*
Μηνύματα: 857

Άντρας WWW
Απάντηση #1 στις: 06 Φεβρουάριος 2010, 00:13
0

Ολοκληρωμένο παράδειγμα αλγορίθμου CRC.

Κώδικας:
/**********************************************************************
 *
 * Filename:    crc.c
 *
 * Description: A table-driven implementation of CRC-CCITT checksums.
 *
 * Notes:       Some of the constants in this file are specific to
 *              Arcom's Target188EB hardware.
 *
 *              This code can be easily modified to implement any
 *              "non-reflective" CRC algorithm.  Simply change the
 *              constants POLYNOMIAL, INITIAL_REMAINDER, FINAL_XOR,
 *              and--if an 8 or 32-bit CRC is required--the definition
 *              of type 'width'.
 *
 *
 * Copyright (c) 1998 by Michael Barr.  This software is placed into
 * the public domain and may be used for any purpose.  However, this
 * notice must not be changed or removed and no warranty is either
 * expressed or implied by its publication or distribution.
 **********************************************************************/

#include <string.h>
#include "led.h"

/*
 * The CRC parameters.  Currently configured for CCITT.
 * Simply modify these to switch to another CRC standard.
 */
#define POLYNOMIAL          0x1021
#define INITIAL_REMAINDER   0xFFFF
#define FINAL_XOR_VALUE     0x0000

/*
 * The width of the CRC calculation and result.
 * Modify the typedef for an 8 or 32-bit CRC standard.
 */
typedef unsigned short width;

#define WIDTH  (8 * sizeof(width))
#define TOPBIT (1 << (WIDTH - 1))

/*
 * An array containing the pre-computed intermediate result for each
 * possible byte of input.  This is used to speed up the computation.
 */
width crcTable[256];

/**********************************************************************
 *
 * Function:    crcInit()
 *
 * Description: Initialize the CRC lookup table.  This table is used
 *              by crcCompute() to make CRC computation faster.
 *
 * Notes:       The mod-2 binary long division is implemented here.
 *
 * Returns:     None defined.
 *
 **********************************************************************/
void
crcInit(void)
{
    width remainder;              
    width dividend;              
    int bit;                  

    /*
     * Perform binary long division, a bit at a time.
     */
    for (dividend = 0; dividend < 256; dividend++)
    {
        /*
         * Initialize the remainder.
         */
        remainder = dividend << (WIDTH - 8);

        /*
         * Shift and XOR with the polynomial.
         */
        for (bit = 0; bit < 8; bit++)
        {
            /*
             * Try to divide the current data bit.
             */
            if (remainder & TOPBIT)
            {
                remainder = (remainder << 1) ^ POLYNOMIAL;
            }
            else
            {
                remainder = remainder << 1;
            }
        }

        /*
         * Save the result in the table.
         */
        crcTable[dividend] = remainder;
    }

}   /* crcInit() */


/**********************************************************************
 *
 * Function:    crcCompute()
 *
 * Description: Compute the CRC checksum of a binary message block.
 *
 * Notes:       This function expects that crcInit() has been called
 *              first to initialize the CRC lookup table.
 *
 * Returns:     The CRC of the data.
 *
 **********************************************************************/
width
crcCompute(unsigned char * message, unsigned int nBytes)
{
    unsigned int offset;
    unsigned char byte;
    width remainder = INITIAL_REMAINDER;

    /*
     * Divide the message by the polynomial, a byte at time.
     */
    for (offset = 0; offset < nBytes; offset++)
    {
        byte = (remainder >> (WIDTH - 8)) ^ message[offset];
        remainder = crcTable[byte] ^ (remainder << 8);
    }

    /*
     * The final remainder is the CRC result.
     */
    return (remainder ^ FINAL_XOR_VALUE);

}   /* crcCompute() */


/**********************************************************************
 *
 * Function:    main()
 *
 * Description: Test the CRC functions by computing the CRC-CCITT of
 *              the check string "123456789".  The expected result
 *              was provided by an independent third-party.
 *
 * Notes:
 *
 * Returns:     0 on success.
 *              Otherwise -1 indicates failure.
 *
 **********************************************************************/
main()
{
    #define CCITT_CHECK 0x29B1

    char * s = "123456789";

    /*
     * Initialize the CRC lookup table.
     */
    crcInit();

    /*
     * Compute the CRC of the check string.
     */
    if (crcCompute(s, strlen(s)) != CCITT_CHECK)
    {
        toggleLed(LED_RED);
        return (-1);
    }
    else
    {
        toggleLed(LED_GREEN);
        return (0);
    }

}   /* main() */
Καταγράφηκε

Efstathios Chatzikyriakidis (efxa)
Informatics & Communications Engineer (BSc)

WEB: efxa.org - EMAIL: contact@efxa.org
Xaeron
Γενικός Συντονιστής
Πληροφορικής & Επικοινωνιών

*****
Μηνύματα: 3283

If you smell...what Xaeron...is cooking...

Άντρας
Απάντηση #2 στις: 06 Φεβρουάριος 2010, 03:35
0

Ευχαριστώ αλλά δεν θέλω τον κώδικα...
Καταγράφηκε

lafs
Πληροφορικής & Επικοινωνιών

*
Μηνύματα: 857

Άντρας WWW
Απάντηση #3 στις: 06 Φεβρουάριος 2010, 13:31
0

... ολοκληρωμένο παράδειγμα του αλγορίθμου CRC ...

Τι ακριβώς θέλεις?
Καταγράφηκε

Efstathios Chatzikyriakidis (efxa)
Informatics & Communications Engineer (BSc)

WEB: efxa.org - EMAIL: contact@efxa.org
Xaeron
Γενικός Συντονιστής
Πληροφορικής & Επικοινωνιών

*****
Μηνύματα: 3283

If you smell...what Xaeron...is cooking...

Άντρας
Απάντηση #4 στις: 06 Φεβρουάριος 2010, 14:15
0

Ένα ολοκληρωμένο παράδειγμα όπως αυτό που έχει στις διαφάνειες του κ. Χειλά.
Καταγράφηκε

lafs
Πληροφορικής & Επικοινωνιών

*
Μηνύματα: 857

Άντρας WWW
Απάντηση #5 στις: 06 Φεβρουάριος 2010, 17:50
0

Τελικά εννοούσες παράδειγμα από τις σημειώσεις του Χειλά.

ΟΚ. Δεν το έχω παρακολουθήσει γιατί τώρα μπαίνω στο 6 εξάμηνο.

Πάντως θεωρώ πως αυτό το παράδειγμα είναι κατατοπιστικότατο.

Για να βρεις και σχετική θεωρία από αυτό σου προτείνω να διαβάσεις το ανάλογο κεφάλαιο του βιβλίου:

http://oreilly.com/catalog/9781565923546
Καταγράφηκε

Efstathios Chatzikyriakidis (efxa)
Informatics & Communications Engineer (BSc)

WEB: efxa.org - EMAIL: contact@efxa.org
differentreality
Πληροφορικής & Επικοινωνιών

*
Μηνύματα: 608

Γυναίκα
Απάντηση #6 στις: 06 Φεβρουάριος 2010, 19:36
+6

Είναι πολύ εύκολο... Σου δίνεται:
->  ένα μήνυμα σε ακολουθία από 0 και 1, π.χ. 1100101
->  και ένας γεννήτορας
    - είτε σε ακολουθία από 0 και 1 πάλι, δλδ 110011,
    - είτε στη μορφή G(x)=x^5 + x^4 + x + 1

(το G(x)=x^5 + x^4 + x + 1 ισούται με το 110011, νομίζω είναι προφανές πώς προκύπτει, όπου έχουμε όρο βάζουμε 1 όπου λείπει, όπως πχ στις δυνάμεις του 2 και του 3, τότε βάζουμε 0)

Άρα με τα 2 αυτά δεδομένα κάνεις τα εξής:

1.  Προσθέτεις στο τέλος του μηνύματος που θέλεις να μεταδώσεις μηδενικά (Πόσα μηδενικα?  Όσο ο αριθμός των ψηφίων του γεννήτορα μείον 1)


2.  Διαιρείς το μήνυμα που προκύπτει (μήνυμα προς μετάδοση ακολουθούμνενο από τα απαραίτητα 0) με τον γεννήτορα

3.  Παίρνεις το υπόλοιπο της διαίρεσης και το προσθέτεις στο μήνυμα προς μετάδοση (το αρχικό μήνυμα ΧΩΡΙΣ τα μηδενικά που προσθέσαμε για τη διαίρεση)

4.  Άρα το μήνυμα που αποστέλλεται τελικά είναι το αρχικό μήνυμα που μας δόθηκε ακολουθούμενο από το υπόλοιπο της διαίρεσης

5.  Ο παραλήπτης παίρνει το μήνυμα αυτό και το διαιρεί με τον γεννήτορα, αν το υπόλοιπο της διαίρεσης βγει 0 τότε έχει λάβει το σωστό μήνυμα, αν βγει διάφορο του μηδενός, το μήνυμα έχει σφάλμα.

*Σημείωση1:  Η διαίρεση είναι ουσιαστικά XOR (στο XOR όταν έχεις όμοια ψηφία το αποτέλεσμα είναι 0 ενώ αν είναι διαφορετικά το αποτέλεσμα είναι 1)
*Σημείωση2:  Αν στη διαίρεση το πρώτο ψηφίο είναι 0 τότε ΔΕ διαιρούμε με το πολυώνυμο γεννήτορα αλλά με ακολουθία από μηδενικά.  

Π.Χ.

Έστω ότι ο αποστολέας θέλει να μεταδώσει το μήνυμα 1100101 με γεννήτορα G(x) = x^3 + x + 1, ποιο είναι το μήνυμα που θα αποσταλεί τελικά?

Το πολυώνυμο του γεννήτορα ισούται με 1011 και έχει σύνολο 4 ψηφία.  
Άρα εμείς στο αρχικό μας μήνυμα θα προσθέσουμε 3 μηδενικά και θα προκύψει το 1100101000

Διαιρούμε ως εξής:

1 1 0 0 1 0 1 0 0 0 | 1 0 1 1
1 0 1 1              
_______            
0 1 1 1 1 (το υπόλοιπο της διαίρεσης/XOR είναι το 0111 και κατεβάζουμε και τον άσσο)
  1 0 1 1
_________
  0 1 0 0 0
    1 0 1 1
   _________
    0 0 1 1 1 (ΠΡΟΣΟΧΗ το υπόλοιπο είναι 0011, κατεβάζουμε και έναν άσσο και θα κάναμε XOR
      0 0 0 0         το 0111 με το 1011 ΑΛΛΑ το 0111 ξεκινάει με 0 άρα θα κάνουμε ΧΟR με μηδενικά!!!)
    __________
      0 1 1 1 0
        1 0 1 1
       _________
        0 1 0 1 0
          1 0 1 1
         _________
          0 0 0 1 0 (Προσοχή και εδώ έχουμε 0 άρα διαιρούμε με μηδέν! Ουσιάστικά μας ενδιαφέρει
            0 0 0 0         το 2ο ψηφίο από το υπόλοιπο, στην προκειμένη περίπτωση είναι το 0001)
           __________
            0 0 1 0

Άρα προκύπτει το υπόλοιπο 0010, άρα το μήνυμα που θα αποστείλουμε θα είναι το    1100101010

Ο παραλήπτης θα κάνει την διαίρεση με τον ίδιο ακριβώς τρόπο διαιρώντας το μήνυμα που στάλθηκε (και παρέλαβε), δλδ το 1100101010 με τον γεννήτορα 1011.  Το υπόλοιπο της διαίρεσης θα πρέπει να βγει 0.

Αν προκύψει σφάλμα και ο παραλήπτης λάβει μήνυμα διαφορετικό από αυτό που στάλθηκε τότε η διαίρεση με τον γεννήτορα ΔΕ θα δώσει 0.
Τελευταία τροποποίηση: 28 Ιανουάριος 2011, 23:47 από Sermac Καταγράφηκε
Xaeron
Γενικός Συντονιστής
Πληροφορικής & Επικοινωνιών

*****
Μηνύματα: 3283

If you smell...what Xaeron...is cooking...

Άντρας
Απάντηση #7 στις: 09 Φεβρουάριος 2010, 08:58
+2

differentreality, σε ευχαριστώ πάρα πολύ! Ήσουν αρκετά κατανοητή!
Καταγράφηκε

differentreality
Πληροφορικής & Επικοινωνιών

*
Μηνύματα: 608

Γυναίκα
Απάντηση #8 στις: 09 Φεβρουάριος 2010, 10:19
0

no prob blink  αλλα κοίτα να σκίσεις στο μάθημα ε :p
Καταγράφηκε
Mini
Πληροφορικής & Επικοινωνιών

*
Μηνύματα: 512

Γυναίκα
Απάντηση #9 στις: 12 Ιούνιος 2010, 16:40
0

παιδιά στα θέματα θεωρίας "σε περίπτωση που αλλοιωθούν κάποια bits απο την ακολουθία του μηνύματος ποιο θα ειναι το αποτέλεσμα της διαίρεσης" πως απαντάμε;
Καταγράφηκε
Σελίδες: [1] 2 3   Πάνω
Εκτύπωση
Μεταπήδηση σε:  

Χορηγοί:
Academy | Applied Engineering StudiesΔιαφημιστείτε εδώ!serresLife.gr | Online κοινότητα των Σερρών