Top module for the Comm_IC project. Submitted for the TinyTapeout8 (TT8).
Designed by: Bhavuk
Github ID: Bhavuk-HDL
Date of creation: 04-Sept-2024
Code version: V01
This project combines three different communication protocols, namely:
To communicate with this project, there is 'data_en' signal.
data_en should be low by default. When it gets high e receive 4 bit data
from data_in (MSB first) based on the clk rising edge.
First 4-bits of data bits will decide the comm. protocol and readwrite.
data_in = 4'bab_cd:
ab: 00-> Read
ab: 11-> Write
cd: 00-> UART
cd: 01-> SPI
cd: 10-> I2C
ab: 10-> Use previous settings: valid only in 'write mode'.
Second 4-bits will have two directions: 'read mode' or 'write mode'.
Read mode: data will be read from the comm protocol and interrupt will be
set to '0'.
Write mode: if cd was set to '11' in the last cycle, we use previous
settings for the comunication. Otherwise we use fresh settings.
Next few 4-bit sequences will be used to send the data to resp. module.
Refer to the test_bench folder in src for test cases.
Not applicable
# | Input | Output | Bidirectional |
---|---|---|---|
0 | UART_RX | UART_TX | SDA_out |
1 | MISO | SEN | new_uart |
2 | data_en | SCLK | data_out[0] |
3 | MOSI | data_out[1] | |
4 | SCL | data_out[2] | |
5 | busy_uart | data_out[3] | |
6 | busy_spi | error_i2c | |
7 | busy_i2c |