Page 1109 - 3-2
P. 1109

if(rx_clk_cnt >= baud_rate)
             // 컴퓨터의 통신속도로 시스템클럭 분주
                          begin
                               rx_clk_cnt <= 0;
                             if(rx_bit_cnt >= 8)  rx_bit_cnt <= 0;
             //  수신데이터 bit count
                             else rx_bit_cnt <=  rx_bit_cnt +1'b1;
                             end
                     else rx_clk_cnt <= rx_clk_cnt + 1'b1;
                     if  ( rx_bit_cnt < 8 && rx_clk_cnt == baud_rate) // receive data
                             begin
                     rx_data_buffer[rx_bit_cnt]  <= rxd;
                     state_rx  <= 1;
                     end
                     else   if (rx_bit_cnt == 8&& rx_clk_cnt == baud_rate && rxd == 1)
                                     // stop receiving
                     begin
                     state_rx  <= 0;
                     rx_data   <= rx_data_buffer; // data  출력
                     end
                     //  if stop bit is not received, clear the received data
                     else   if (rx_bit_cnt == 8 && rx_clk_cnt == baud_rate && rxd != 1)
                     begin
                     state_rx  <= 0;
                     rx_data_buffer  <= 8'b00000000;         // invalidate
                     end
                       end
                     end
             endmodule




            ********************************  스마트홈 부분 Verilog HDL       코드 *******************************
             module    relay_test(clk,rst,rxd,relay1,relay2,relay3,relay4,rx_data);

             /*
             스마트 홈 부분 통합 모듈
             */

             input clk,rst,rxd;
             output reg relay1,relay2,relay3;
             output reg [1:0]relay4;
             output [7:0] rx_data;
             uart_rx1 u0(clk,rst,rxd,rx_data);

             always @(posedge clk, negedge rst) //BlueTooth  를 통해 수신한 값에 따라 집 제어
             begin
                     if(!rst)  {relay1,relay2,relay3,relay4}<=0;
                     else
                     begin
                     case(rx_data)
                     "c"  : relay1<=1; //fan on
                             "d": relay1<=0; //fan  off
                     "e"  : relay2<=1; // 침실 on
                     "f" : relay2<=0; // 침실 off
                     "g" : relay3<=1; // 화장실 on
                     "h"  : relay3<=0; // 화장실 off
                     "i" : relay4<=2'b01; // 커튼 on
                     "j" : relay4<=2'b11; // 커튼 off
                     default : {relay1,relay2,relay3,relay4}<=0;
                     endcase
                     end
             end

             endmodule




                                                        - 1109 -
   1104   1105   1106   1107   1108   1109   1110   1111   1112   1113   1114