📄 usbrefdesign.v
字号:
module USBRefDesign(
//系统信号
input wire sclk, //sclk为FPGA工作时钟,默认100MHz.
//FPGA和FT245MB间的USB接口
input wire USB_RXE,
output reg USB_RD,
input wire [7:0] USB_DATA, //USB和FPGA间的双向数据库总线
output wire USB_SI,
output reg [7:0] LED
); //处于读状态时,由忙碌状态变为空闲状表示上一个数据开始有效
//******************************************************
//内部寄存器定义
reg [4:0] RD_time_cont; //读等待时间计数器
reg [4:0] WR_time_cont; //写等待时间计数器
reg [8:0] count;
reg istrue;
parameter TX_state0 = 2'b00; //写状态0
parameter TX_state1 = 2'b01; //写状态1
parameter TX_state2 = 2'b10; //写状态2
parameter TX_state3 = 2'b11; //写状态3
reg [1:0] TX_state; //写状态
//******************************************************
//本模块与FT245B间的数据总线
//******************************************************
assign USB_SI=1;
//******************************************************
//其他模块与本模块之间的数据交换
//******************************************************
//******************************************************
//本模块写FT254BM状态机
//******************************************************
always@(posedge sclk ) //sclk为FPGA工作时钟,默认100MHz.
begin
if(USB_RXE==1'b0) //WR_Enable 高有效
begin
case(TX_state)
TX_state0:
begin
USB_RD<=1'b0; //产生写信号的上升沿
TX_state<=TX_state1;
end
TX_state1:
begin
//USB_DATA <=8'b10110101; //写一个字节到FIFO,data_to_usb_buffer为发送缓冲寄存器
LED<=USB_DATA;
TX_state<=TX_state2;
end
TX_state2:
begin
USB_RD <=1'b1;
TX_state<=TX_state3;
end
TX_state3:
begin
end
endcase
end
else
begin
TX_state<=TX_state0;
USB_RD <=1'b1;
end
end
endmodule
//////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -