原创 以太网,FPGA就一定能搞定系列之芯片基本通信

2013-12-24 19:29 4108 10 11 分类: FPGA/CPLD 文集: SF-CY3 FPGA套件开发指南

以太网,FPGA就一定能搞定系列之芯片基本通信

 

本系列博文节选自特权同学的FPGA开发电子书《SF-CY3 FPGA套件开发指南》。

最新设计文档下载地址:http://pan.baidu.com/s/1em79m

 

1 概述

         本实例的系统框图如图所示。后续的实验我们基本都是以此硬件架构为基础进行应用开发。NIOS II处理器和各个外设通过Avalon-MM总线进行互联通信,UART外设连接CH395UART接口,进行命令和数据的传输交互;PIO外设连接CH395的中断信号,NIOS II处理器可以据此响应CH395的中断请求;JTAG-UART外设连接PC端的EDS软件,用于打印各种调试信息,便于我们追踪以及查看当前的板级调试状态。

 

3.1.jpg

         在这个基础实例中,我们先不着急进行以太网的应用实例,只是简单的移植好CH395的底层驱动函数,并且打通UART通信,确认NIOS II可以通过UART正确读写CH395寄存器中的数据和指令。

 

2 Qsys硬件工程移植

         打开Quartus II工程,进入Qsys界面。我们除了使用NIOS IIUART外设进行CH395的基本通信外,还需要新建一个输入PIO的外设,作为CH395的中断引脚连接;再添加一个Timer外设作为NIOS II软件准确延时的基准时钟。

         如图所示,这是该Qsys系统的各个外设组件及其相应的连接。

 

3.2.jpg

         顶层源代码如下。UART外设的TXRX分别连接到CH395的对应引脚上,输入PIO信号连接CH395的中断信号上。

module ex2(

            clk,rst_n,led,

            ch395_tx,ch395_rx,ch395_rst_n,ch395_irq

        );

 

input clk;

input rst_n;

output led;

input ch395_tx;     //CH395 UART-TX PIN_65

output ch395_rx;    //CH395 UART-RX PIN_66

output ch395_rst_n; //CH395 RESET, ACTIVE LOW   PIN_68

input ch395_irq;    //CH395 Interrupt   PIN67

 

myqsys u0 (

        .clk_clk                                       (clk), //                                    clk.clk

        .pio_0_external_connection_export              (led), //              pio_0_external_connection.export

        .clk_0_clk_in_reset_reset_n                    (rst_n), //                     clk_0_clk_in_reset.reset_n

        .nios2_qsys_0_custom_instruction_master_readra (  ),  // nios2_qsys_0_custom_instruction_master.readra

        .myuart_external_connection_rxd                (ch395_tx),                //             myuart_external_connection.rxd

        .myuart_external_connection_txd                (ch395_rx),                //                                       .txd

        .ch395_irq_external_connection_export          (ch395_irq)           //          ch395_irq_external_connection.export

);

 

assign ch395_rst_n = 1'b1;

 

endmodule

         分配引脚。编译新工程,将sof文件下载到SF-CY3核心板中。

 

3 软件设计

         打开EDS软件,以当前硬件为基础创建空白工程,命名为ch395ex1_swprj。打开新工程的BSP Editor编辑界面,在Main页面的SettingsàCommon中做代码裁剪设置。

         BSP的设置,主要是在开启必须的底层驱动的前提下,尽可能的裁剪代码量,从而确保有限的片内代码存储量得到合理利用。

         软件工程的基本架构如图所示,3.c源文件,1.h头文件。main.c用于编写主要的应用程序;ch395uart.c编写UART通信的各种基本函数;ch395cmd.c编写CH395各种命令和数据传输驱动函数,这部分基本是从官方提供的函数库中移植过来的;ch395inc.h对各个源代码中需要调用的各种函数做了申明,同时也对申明了各个需要用到的宏定义,3C源代码文件中都包含了这个头文件。

 

3.3.jpg

         官网上可以下载到CH395EVT.ZIP,这个压缩包中提供了CH375的底层驱动函数。但是要把它应用到NIOS II处理器中,着实还是要花点功夫的,好在特权同学将这个任务都搞定了,大家只要能够读懂datasheet,对各个命令的用处搞清楚即可,接下来的事情便是调用这些函数完成各种以太网的数据收发工作了。

CH395EVT.ZIP下载链接:http://www.wch.cn/download/list.asp?id=176

本实例的软件流程如图所示。CH395初始化中将通过JTAG UART打印出FPGACH395进行基本数据通信的信息。

 

3.4.jpg

4 板级调试

         将硬件工程产生的下载配置数据流sof文件下载到目标板中,然后在线运行软件工程。稍等片刻,我们就可以看到在Nios II Console窗口中打印如图所示的CH395相关信息。

 

3.5.jpg

 

 

文章评论1条评论)

登录后参与讨论

用户377235 2015-10-25 22:17

It's much easier to unenrstadd when you put it that way!
相关推荐阅读
特权ilove314 2016-06-30 21:16
例说FPGA连载6:FPGA开发所需的技能
例说FPGA连载6:FPGA开发所需的技能 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   前面的文字已经做了很多铺垫,相信读...
特权ilove314 2016-06-28 21:09
例说FPGA连载5:FPGA的优势与局限性
例说FPGA连载5:FPGA的优势与局限性 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   若要准确评估FPGA技术能否满足开...
特权ilove314 2016-06-28 21:05
例说FPGA连载5:FPGA的优势与局限性
例说FPGA连载5:FPGA的优势与局限性 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   若要准确评估FPGA技术能否满足开...
特权ilove314 2016-06-26 22:11
例说FPGA连载4:FPGA语言与厂商介绍
例说FPGA连载4:FPGA语言与厂商介绍 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   Verilog与VHDL 说到FP...
特权ilove314 2016-06-23 21:26
例说FPGA连载3:FPGA与其它主流芯片的比较
例说FPGA连载3:FPGA与其它主流芯片的比较 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   FPGA、ASIC和ASSP...
特权ilove314 2016-06-21 20:32
例说FPGA连载2:FPGA是什么
例说FPGA连载2:FPGA是什么 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   2015年伊始,Intel欲出资百亿美金收...
我要评论
1
10
关闭 站长推荐上一条 /2 下一条