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 -