目录
一.RS485简介
二.实验任务
使用两块开发板通过RS485端口互联,由各自开发板上的两个按键分别控制对方开发板上两个灯的亮灭。当按键按下时,对方开发板上对应的led灯点亮;按键释放时,对应的led灯熄灭。
三.系统框图设计
这里Uart_rx模块同Uart_tx模块采用uart串口通信里的模块,因为rs232和rs485用到的uart协议(数据格式,传输速率)一样的,所以这里可以直接拿来用。
当开发板接收信号时,并行信号传至uart_rx,该模块将灯并行信号转换至串行信号uart_rx_data[7:0](高六位是0,低两位才是灯信号),led_ctrl模块接收uart_rx_data的低两位信号,从而控制灯亮灭。
当开发板发送信号时,key_trig模块首先对Key信号进行消抖,然后将key串行信号发送至uart_tx,uart_tx将按键串行信号转换至并行信号后传输出去。
四.波形仿真
4.1key_trig波形仿真
起始状态key为2‘b11,因为高电平表示按键未按下,低电平代表灯按下。中间由11跳变至00又跳变至11又跳变至00是在模拟按键抖动。当按键按下至稳态,开始对key信号进行打拍,因为这里需要捕捉key的下降沿,因此打三拍处理。捕捉到key的有效下降沿信号为key_data_valid。
4.2uart_tx波形仿真
当key按键按下时,即key_data_valid信号=uart_tx_en信号为高电平时,uart_tx_data暂存key_data信号,并且随着计数器的计数,将该值传给uart_txd。故uart_tx模块最终要发送的信号是uart_txd=8’b00000000。低两位00包含着按键被按下的信息。
4.3uart_rx波形仿真
当uart_rxd波形由1变为0时,意味着起始位到来,计数器可以开始计数了,将接收到的8位数据以rx_cnt为索引记录下来,并逐步赋值给rx_data_t直至信号传输完毕,将rx_data_t信号一次性赋值给uart_rx_data信号,完成并行到串行的转换。
4.4led_ctrl模块波形仿真
当uart_rx模块将信号转换完毕后,即uart_rx_data信号=led_en信号为高电平时,led_data接收uart_rx转换完毕的串行信号uart_rx_data[7:0]信号的低两位,即uart_rx_data[1:0],由于灯亮为高电平,按键按下为低电平,两者互为相反的关系,故当led_data信号来临时,led对其按位取反即可。