Computer Science Homework Help

CMPE 415 Montgomery College The Hamming Code and Error Detection Problems

 

CMPE 415 – Homework/Project #6 [30 Pts]

Problem 1

Using the Hamming coding described in the class, determine whether there is an error in each of the following ECC words (you need to write the equations and explain in detail), and if so, determine the corrected ECC word and the original data value.

a) 100100011010

b) 000110111000

c) 111011011101 [70 pts]

Problem 2 Using Hamming code described in class, design an error correction code (ECC) for a 4-bit data word. Reminder:

– Required number of check bits is log2N+1, where N is data word length

– ECC bits whose indices are powers of two are used as check bits.

– If we write the indices of ECC bits in binary, the check bit with a 1 in position i of its index is the XOR of data ECC bits that have a one in position i of their indices.

[5 pts] What is the length of total code word? Which bits are check bits and which one are data bits? Compute the ECC bits for 4-bit data 0110 and write the complete code word.

[20 pts] Write the verilog for the module that checks if there is an error in the received data. The verilog module has the received word as input and has two outputs error and error-bit. If there is any error, then the verilog module must locate the error bit and make the error signal to be 1 and send out the location of error-bit. Otherwise the error signal remains zero. Error detection module error bit location error Input Verified Behavioral Simulation •

[15 pt] Write a testbench that can tests the block with these input values. First write down what is the error bit location if there was an error. o 1111000 o 0110111 o 1000111 o 0111010

[20 pt] UART Implementation • In order to see what is happening in your FPGA, in the implementation you will communicate via a UART connection. No need for extra cables; the USB connection is configured on the board as a UART • You will need a serial terminal, SPECIFICALLY REALTERM(it’s the only one which can send/receive in hex or binary. Instructions here https://learn.sparkfun.com/tutorials/terminal-basi…

• Although you will receive the core UART models, you are responsible for figuring out how to connect it to your main module. Hopefully a sample will be provided but no promises.

  • In the constraints file (.XDC) you will need to uncomment the pins for the UART and connect those to inputs/outputs of your primary module. Use the Serial_GPIO module in the UART file as a guide. The link here https://www.fpga4fun.com/SerialInterface.html has an explanation and a downloadable zip folder with some files.
  • The UART will operate using the center button to trigger the TX and the up button to trigger the RX
  • The RX will receive a hex character from Realterm and will save that to a buffer in the FPGA. Your module will then perform the Hamming code analysis, and either send to the screen: – If there are no errors it will transmit the same number – If there’s 1 error it will transmit the corrected number – If there are 2+ errors it will transmit FF, an invalid number since there are only 7 bits to this number
  • Since there are only 7 bits to this number the first bit will always be 0, and the first hex digit always 7 or smaller. When returning a valid number always make sure the padding stays intact.
  • You may use binary or hex to display the numbers, it’s just a preference. For your sanity you should probably use binary. Written Report • [10 pt] Submit all files with a complete report explaining the details of the design and Schematic block diagrams.