1.原理
全双工:在同一时刻可以同时进行数据的接收和数据的发送,两者互不影响
半双工:在同一时刻只能进行数据的接收或者数据的发送,两者不能同时进行
差分信号幅值相同,相位相反,有更强的抗干扰能力。
干扰对差分信号的影响都是相同的,所以差分信号的干扰一相减就没有了
RS485的优点,采用差分信号有更强的抗干扰能力;相比RS232能能进行长距离传输(RS485要用到收发器芯片,收发器的灵敏度是很高的,可以检测到低至200mv的电压,表示传输信号在千米之外都可以恢复,最远的通信距离可以达到1200米左右,速度最快10MB/s,速度和距离是成反比的,速度越小,传输距离越长,长距离的通信可以增加RS485的中继器);缺点就是只支持半双工。
RE是低电平有效,表示数据的收,当接收时,RE=0,DE=0;然后芯片将差分信号转换为单端信号。当RE=1,DE=1时,数据发送,将单端信号转换为差分信号。
485和232使用相同的传输协议
2.代码
以上是控制板的波形图
以上是被控板的时序图
2.1 led_ctrl.v
module led_ctrl(
input wire sys_clk ,
input wire sys_rst_n ,
input wire [3:0] led_out_w ,//流水灯
input wire led_out_b ,//呼吸灯
input wire [7:0] pi_data ,
input wire key_flag_w ,
input wire key_flag_b ,
output reg [3:0] led ,
output wire [7:0] po_data ,
output wire po_flag
);
reg w_en;
reg b_en;
assign po_data={6'b000_000,b_en,w_en};
assign po_flag=key_flag_b||key_flag_w;
always@(posedge sys_clk or negedge sys_rst_n)
if(sys_rst_n==1'b0)
w_en<=1'b0;
else if(key_flag_b==1'b1)