Professional Documents
Culture Documents
The meteorological department receives image data from satellite at fixed, reasonably long intervals. The image is a 7-bit grayscale bitmap of size 8x8. What this means is that the image is composed of 8x8 pixels, with each pixel value varying from 0 (for black) to 127 (for white). The receiving station receives this bitmap data through an 8-bit input port. The MSB of this data is always zero since the maximum value of an individual pixel is 127. The receiving station has to transmit this data to the lab for analysis. Since the image does not differ much between successive receptions, hence it is wasteful to transmit the received data as it is over the communication channel. Instead, 2 consecutive frames are stored and information regarding a given pixel is transmitted only if its value has changed with respect to its previous value. This reduces the volume of communication since only the incremental changes in the image are actually transmitted. The changes in data are encoded using Hamming code and then transmitted over a serial link. On the other side (the lab), this encoded data is received over the serial link. The data is decoded and error detection and correction is done on this decoded data (Assume that only single bit errors may occur). This incremental data is then used to reconstruct the image that was originally sent by the satellite.
System Architecture
The receiver subsystem is a complement of the transmission subsystem. This subsystem consists of the following components 1. The Asynchronous receiver. This receives serial data over the communication channel. This data is then grouped together in packets of 18 bits to reconstruct the original packet which was transmitted by the transmitter. 2. The error detector/corrector. Assuming that only single bit errors may occur during the transmission of data, this component detects if any transmission error has occurred and if it has, then it corrects the data. The additional hamming bits are stripped and the original 14-bit data packet is reconstructed. 3. The data expander. This component then populates a well defined area of the memory with the differential data. All locations for which there is no differential data received are set to 0 to indicate that there has been no change in pixel values for those locations.
location whose address had been latched earlier is then transferred to the data bus at the negedge.
Memory Organization
7. The address is generated as the concatenation of the bank select and the counter value. The counter increments every alternate clock cycle (since data is transmitted in the intermediate clock cycle) 8. In the first clock cycle, ALE is asserted and the concatenation is loaded onto the bus. 9. In the second clock cycle, ALE is de-asserted, MEMW is asserted and the data bus is loaded with the difference of the frame buffer values (current value previous value). 10. This pair of activity continues for 64 * 2 clock cycles at the end of which data has been completely transferred to the selected memory bank. 11. HOLD signal is now de-asserted indicating that the DMA controller is done with the transfer of data. 12. In the next cycle HLDA is de-asserted by the main controller. During this cycle, IORead is asserted and FB0Sel is de-asserted so that incoming data will be directed to the other frame buffer. 13. Now the process continues as before.
2. Design re-usable components using parameters and parameter types. This is especially true for general purpose blocks like the subtractor, the comparator etc 3. Use FSMs for modeling activities that have a well-defined sequence. Also use enums to represent the various states of the FSM. 4. Use structs and unions. The bus for example, will be a struct consisting of the data/address bus and the control bus. The data/address bus itself is a union of the data and address buses since the same bus is multiplexed to carry address and data as well. The control bus again is a struct made up of the individual control signals. 5. The array types have to be designed such that the packed and unpacked dimensions represent the way the array is going to be handled. For example, the memory would be designed as an unpacked array of bytes, which in itself would be a packed array of bits. 6. Use casting wherever required. For example, the subtractor would need to convert the numbers into a signed format before subtraction. Also the logic that determines the next memory bank to be selected should be designed to increment an enum. 7. Use the always_latch, always_comb and always_ff constructs to indicate the kind of logic that is going to be created inside. 8. Use unique and priority keywords wherever needed.
6. This data is then passed on to the Asynchronous Transmitter which works at a frequency 25 times that of the normal clock. The operation of the transmitter is described below.