EagleSDR USB HAT FT600

这篇具有很好参考价值的文章主要介绍了EagleSDR USB HAT FT600。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

给EagleSDR做了个USB 3.0的子卡,采用FT600方案,实物如下:
EagleSDR USB HAT FT600,FPGA,SDR,fpga开发
用FT600DataStreamerDemoApp测试,速度如下:
EagleSDR USB HAT FT600,FPGA,SDR,fpga开发
由于FT600是16bit的接口,如果用FT601的32bit接口,性能应该还会有大幅提升。
测试代码很简单,参考了网上大佬的例程文章来源地址https://www.toymoban.com/news/detail-703478.html

`timescale 1ns / 1ns

module FT600_stream
(
    //PL时钟
    input                  pl_clk,          //PL端时钟
    // 复位
    input                  rst_n,           //外部复位
    output reg             ft600_reset_n,   //ft600复位

    // FIFO interface    
    input                  ft600_clk,
    inout [15:0]           ft600_data,
    inout [1:0]            ft600_be,
    input                  ft600_rxf_n,
    input                  ft600_txe_n,
    output                 ft600_oe_n,
    output                 ft600_wr_n,
    output                 ft600_rd_n
);

reg ft600_wakeup_reg;

//从host来,退出读操作
wire r_oob;
//从host来,退出写操作
wire w_oob;

// assign ft600_siwu_n = 1'b1;             // pull-up

wire [15:0] rd_data;
wire [15:0] wr_data;
wire [1:0] be_rd;
reg [1:0] be_wr;
reg [2:0] ft600_state;                  //状态

localparam  FT600_IDLE=0,
            FT600_READ=1,
            FT600_READ_ABORT=2,
            FT600_WRITE=3,
            FT600_WRITE_ABORT=4;

assign rd_data  =  ft600_data;
assign ft600_data  =  (ft600_state==FT600_WRITE || ft600_state==FT600_WRITE_ABORT) ? wr_data : 16'bz;
assign be_rd    =   ft600_be;
assign ft600_be =  (ft600_state==FT600_WRITE || ft600_state==FT600_WRITE_ABORT) ? be_wr : 2'bz;// write data dir


reg [15:0] wr_cnt;
assign wr_data = 16'hffff - wr_cnt;

//写计数器
always @(posedge ft600_clk)
begin
    if(!ft600_reset_n)begin
        wr_cnt <= 16'd0;
    end
    else 
    if(!ft600_wr_n) 
    begin
        wr_cnt <= wr_cnt + 1'b1;
    end
end

//写信号
assign ft600_wr_n=!((ft600_state==FT600_WRITE || ft600_state==FT600_WRITE_ABORT) && !ft600_txe_n);
//读信号,读状态且有数据可读
assign ft600_rd_n=!((ft600_state==FT600_READ || ft600_state==FT600_READ_ABORT) && (!ft600_rxf_n));
//在空闲态或读状态,且有数据可读时,允许FT600控制数据线
assign ft600_oe_n=!((ft600_state==FT600_IDLE || ft600_state==FT600_READ || ft600_state==FT600_READ_ABORT) && !ft600_rxf_n);

//定时器
localparam DELAY_5MS_CNT=(5*100000-1);
reg[31:0] delay_timer;

//状态机
always @(posedge ft600_clk)begin
    if(!ft600_reset_n)
    begin
        ft600_state <= FT600_IDLE;
    end
    else 
    begin
        if (r_oob)
        begin
            be_wr<=2'b01;
            delay_timer <= DELAY_5MS_CNT;
            ft600_state<=FT600_WRITE_ABORT;
        end
        else if (w_oob)
        begin
            delay_timer <= DELAY_5MS_CNT;
            ft600_state<=FT600_READ_ABORT;
        end
        else
        begin
            case(ft600_state)
            FT600_IDLE:
            begin
                be_wr <= 2'b11;
                if((!ft600_rxf_n))
                    ft600_state  <= FT600_READ;         //有数据可读
                else if(!ft600_txe_n)
                    ft600_state  <= FT600_WRITE;        //可写入数据
                else
                    ft600_state <= FT600_IDLE;
            end
            FT600_READ:
                if (ft600_rxf_n)
                    ft600_state  <= FT600_IDLE;
            FT600_READ_ABORT:
                if (delay_timer==32'b0)
                    ft600_state <= FT600_IDLE;
                else
                begin
                    delay_timer=delay_timer-1'b1;
                end
            FT600_WRITE:
                if(ft600_txe_n)
                    ft600_state  <= FT600_IDLE;
            FT600_WRITE_ABORT:
                if (delay_timer==32'b0)
                    ft600_state <= FT600_IDLE;
                else
                begin
                    delay_timer=delay_timer-1'b1;
                end
            endcase
        end           
    end
end

//延时复位
localparam RST_CYCLE=100;
reg [19:0] rst_cnt;

always @(posedge pl_clk)
begin
    if (!rst_n)
    begin
        ft600_reset_n<=0;
        rst_cnt<=0;
    end
    else
    begin
        if (rst_cnt<RST_CYCLE)
            rst_cnt<=rst_cnt+1;
        else
        begin
            ft600_reset_n<=1;
        end
    end
end

endmodule

到了这里,关于EagleSDR USB HAT FT600的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA驱动FT601实现USB3.0相机 OV5640视频采集 提供2套工程源码和QT上位机源码

    目前USB3.0的实现方案很多,但就简单好用的角度而言,FT601应该是最佳方案,因为它电路设计简单,操作时序简单,软件驱动简单,官方甚至提供了包括FPGA驱动在内的丰富的驱动源码和测试软件; 本设计用FPGA驱动FT601芯片实现USB3.0数据通信,使用同步245模式通信,提供2套v

    2024年02月11日
    浏览(24)
  • Quartus 无法识别 USB-Blaster FPGA 开发板

    在 FPGA(现场可编程门阵列)开发中,Quartus 是一款常用的设计软件,用于编写、编译和配置 FPGA 设备。然而,有时候在使用 Quartus 进行开发时,可能会遇到无法识别 USB-Blaster FPGA 开发板的问题。本文将介绍可能导致该问题的几种常见原因,并提供一些解决方案。 驱动程序问

    2024年02月04日
    浏览(32)
  • FPGA新起点V1开发板(二)——Quartus II软件的安装和USB-BLaster驱动安装

    当然,这种东西我要是再写一遍就很无聊了,这里给出方法和连接 视频:Quartus II软件的安装 文章:【正点原子FPGA连载】第四章Quartus II软件的安装和使用 -摘自【正点原子】新起点之FPGA开发指南_V2.1 资源:FPGA新起点V1开发板 在工具盘里面 破戒:链接 最后当然是成功啦 首先

    2024年02月12日
    浏览(32)
  • FPGA和USB3.0通信

    1、USB3.0介绍 USB3.0协议:协议就是传输数据的规则,定义接口设备、器件及信号、总线及通道之间需要满足的关系。 USB3.0接口:接口是一种连接标准,又常常被称之为物理接口。 USB3.0总线:总线是一组传输通道,是各种逻辑器件构成的传输数据的通道,一般由由数据线、地址线、

    2024年02月01日
    浏览(24)
  • FT232R USB UART驱动安装

    FT232R USB UART驱动安装 提示无FT232R USB UART驱动! 安装该驱动:​ ​https://ftdichip.com/drivers/d2xx-drivers/​

    2024年02月11日
    浏览(26)
  • 基于USB总线技术的数据采集系统接口——FPGA实现Matlab

    基于USB总线技术的数据采集系统接口——FPGA实现Matlab USB总线技术是一种常用的数据传输接口,广泛应用于各种设备和系统中。在数据采集系统中,USB接口可以用于连接外部传感器、测量设备等,将采集到的数据传输到计算机或其他处理设备上进行处理和分析。本文将介绍如

    2024年02月08日
    浏览(38)
  • FPGA 68013 USB2.0 多通道数据采集,工程验证过

    FPGA 68013  USB2.0  多通道数据采集,工程验证过 FPGA 68013 USB2.0 多通道数据采集,工程验证过 随着科技的发展和信息技术的不断进步,数据采集技术在各个领域的应用越来越广泛,其中,多通道数据采集技术尤为重要。在这种技术领域中,FPGA 68013 USB2.0 多通道数据采集技术成为

    2024年02月21日
    浏览(37)
  • CH569 USB批量传输应用示例(fpga<->PC)学习笔记(一)

    使用的示例程序为: 链接: USB通用知识点集合 解压后包含两个代码工程,导入MRS: 分别编译工程,将两个HEX分别烧录到CH569评估板中。我这里是吧HSPI_HOST.hex烧录到了下面的板子,CH569_BULK_HSPI_Lib.hex烧录到了上面的板子,然后测试的时候USB线接上面的板子就可以了,实测交换烧

    2024年02月05日
    浏览(30)
  • FPGA与CYUSB3014实现USB3.0数据传输学习笔记(1)

    简单介绍          赛普拉斯将CYUSB3014简称为EZ-USB FX3,该芯片用于USB3.0的外设控制。           EZ-USB FX3 集成了 USB 3.0 和 USB 2.0 物理层 (PHY) 以及 32 位 ARM926EJ-S 微处理器,具有强大的数据处理能力,并可用于构建定制应用。 本产品采用了一种巧妙的架构,使从 GPIF II 到

    2024年02月09日
    浏览(32)
  • FPGA-(Win11)USB-Blaster无法在此设备上加载驱动解决

    在电脑上连接FPGA的USB-Blaster下载器的时候,可能会出现 无法在此设备上加载驱动 问题,可以通过以下方式解决: 首先这里如果驱动没有安装好,会有感叹号标志! 可以在桌面底部搜索 windows 安全中心 选择 设备安全性 单击顶部的 核心隔离 详细信息选项。 只需要关闭 内存完

    2024年02月09日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包