USB2.0测速实验Cyclone10 FPGA Verilog源码Quartus17.1工程文件+文档资料,FPGA为CYCLONE10LP系列中的10CL025YU256C8. 完整的Quartus工程文件,可以做为你的学习设计参考。
module top
(
input clk,
input ft_clk,
input ft_rxf_n, //Data available
input ft_txe_n, //Space available
output ft_oe_n,
output ft_rd_n,
output ft_wr_n,
inout[7:0] ft_data
);
ft232h ft232h_m0
(
.ft_clk (ft_clk ),
.rst (1'b0 ),
.ft_rxf_n (ft_rxf_n), //Data available
.ft_txe_n (ft_txe_n), //Space available
.ft_oe_n (ft_oe_n ),
.ft_rd_n (ft_rd_n ),
.ft_wr_n (ft_wr_n ),
.ft_data (ft_data )
);
module ft232h
(
input ft_clk,
input rst,
input ft_rxf_n, //Data available
input ft_txe_n, //Space available
output ft_oe_n,
output reg ft_rd_n,
output ft_wr_n,
inout[7:0] ft_data
);
localparam IDLE = 0;
localparam READ = 1;
localparam WRITE = 2;
reg[3:0] state;
reg buf_wr;
reg[7:0] buf_data;
wire[7:0] ft_data_out;
wire buf_empty;
wire buf_full;
wire buf_rd;
reg ft_oe_n_d0;
assign ft_oe_n = (state == READ) ? 1'b0 : 1'b1;
assign ft_data = (ft_oe_n == 1'b0) ? 8'hzz : ft_data_out;
assign ft_wr_n = (state == WRITE && ft_txe_n == 1'b0 && buf_empty == 1'b0) ? 1'b0 : 1'b1;
assign buf_rd = (state == WRITE && ft_txe_n == 1'b0 && buf_empty == 1'b0) ? 1'b1 : 1'b0;
ft_buf ft_buf_m0(
.aclr (1'b0 ),
.data (buf_data ),
.rdclk (ft_clk ),
.rdreq (buf_rd ),
.wrclk (ft_clk ),
.wrreq (buf_wr ),
.q (ft_data_out ),