Page 1105 - 3-2
P. 1105

나. FPGA   관련 소스



            *******************************  스피커 부분 Verilog HDL      코드 ***********************************




             module    speaker_final(clk,rst,l_sen_f,r_sen_f,motor,rxd,rx_data,tracking,tx_out,tx_out_wifi);
             /* 스피커 Verilog    HDL  통합 제어 모듈*/

             input clk,rst,l_sen_f,r_sen_f,tracking;
             input rxd;

             output [7:0]rx_data;
             output [1:0]motor;
             output tx_out,tx_out_wifi;

             reg en,flag,flag2;
             reg [7:0]rx_input,rx_input2; //serial  송신할 데이터
             wire [4:0]tx_cnt_state,tx_cnt_state2; //serial  송신 모듈 상태

             uart_rx1 u0(clk,rst,rxd,rx_data); // Serial  수신 모듈
             speaker_motor u1(clk,rst,l_sen_f,r_sen_f,motor,en); //  스피커 추적기능모듈
             tx_counter u2(rst,clk,tx_out,flag,rx_input,tx_cnt_state); //  serial  송신 모듈
             tx_counter  u3(rst,clk,tx_out_wifi,flag2,rx_input2,tx_cnt_state2);

             always @(posedge clk, negedge rst)
             begin
                     if(!rst)  en<=0;
                     else
                     begin
                     if(tracking==1)  en<=1; // 하드웨어적으로         움직임 on/off
                     else   if(tracking==0) // 통신으로 움직임 on/off
                     begin
                     if(rx_data=="a")  en<=1;
                     else   if(rx_data=="b") en<=0;
                     else   en<=0;
                     end
                     if(rx_data>="c"  && rx_data<="j") // 지정된 제어 값일 때 wifi     로 신호 보냄
                     begin
                     if(tx_cnt_state2==9)  flag2<=0;
                     else   begin flag2<=1; rx_input2<=rx_data; end
                     end
                     /*else  // 지정된 값 이외의 값이 들어오면               되돌려줌
                     begin
                     if(tx_cnt_state==9)  flag<=0; // 출력이    끝나면 flag<=0
                     else
                     begin
                             if(rx_data!="  ") // 공백 아니면     되돌려줌
                             begin
                             rx_input<=rx_data;
                             flag<=1;
                     end             else   flag<=0;
                     end
                     end*/
                     end
             end
             endmodule



             module tx_counter(rst,clk,tx_out,flag,rx_input,tx_cnt_state); // 송신모듈

             input clk,rst,flag;
             input [7:0]rx_input;




                                                        - 1105 -
   1100   1101   1102   1103   1104   1105   1106   1107   1108   1109   1110