基于FPGA的信号发生器的设计

本文详细介绍了基于FPGA的信号发生器设计,包括选用的ALTERA EP2C5T144C8N芯片,以及采用SPI通信方式的实现过程。通过Quartus-II 13.0开发环境进行设计,并分享了SPI通信时序的调试经验。文中还展示了关键代码段,如SPISlave模块和phase_accumulator模块,以及时钟分频器div_clk的设计。最后提到了硬件仿真和软件仿真的重要性,并强调了时序分析的关键性。
摘要由CSDN通过智能技术生成

基于FPGA的信号发生器的设计

首先先要介绍的是本设计的主芯片是ALTERA的一款芯片,芯片名称是EP2C5T144C8N。该芯片的LE单元有4608个,PLL锁相环具有2个,IO口管脚具有142个,差分通道55个,嵌入式乘法器26个,RAM的存储容量大小是119808bits.该FPGA芯片的功耗也比较低。对于信号发生器的设计,不论芯片的类型,只要所设计的逻辑单元够用即可,还有就是内存要够。好了,话不多说。直接来开始FPGA的信号发生器设计吧。

我当时用的是Quartus-II是13.0的版本作为开发环境,设计的通信方式是最常见的SPI通信方式,该方式通信比较简单。当时我为了调这个通信的时序也花了一天时间才搞定,哎!自认为还是比较笨了。

直接上图:

    该图是quartus的开发环境,大家看下,感觉和你们的也不会有太大的区别。尽管软件的版本一直在升级,可是感觉变化也不会太大。

    继续上图:

    这个是我所建立的文件,大概看了一下,其中.v文件是我建立的一些verilog文件,有几个特殊的文件,比如.bdf文件是顶层文件。因为采用的思想是自顶向下的设计思想。先模块化,然后顶层直接调用即可。.qip文件是调用的是quatus自带的IP核,主要是用来存放波形数据的。.stp文件是signaltep文件,主要是用来硬件仿真观察数据用的,这个很有用哦,和modelsim差不多的功能,主要区别是,一个是硬件仿真,一个是软件仿真。都可以用来分析时序。

    直接上代码:

module SPI_SLAVE

#(

    parameterrom_len_width=9,//ROM标的深度,同时也代表了相位控制字的位数

    parameterftw_width=21,//频率控制字的位数

    parameter N=8

)

(

input rst,    //复位端口

input [N-1:0] txdata,    //N位发送数据,CS下降沿把数据存入模块

input sclk,       //spi时钟

input cs,     //spi片选

input mosi,       //从接收端

input ftw_en, //频率输入控制端使能

input ptw_en, //相位控制端口使能

input clk,   //频率>>sclk

 

output reg miso,     //从输出端

output [ftw_width-1:0]    ftw_out, //频率控制字的位数

output [rom_len_width-1:0] ptw_out//相位控制字输出

//output [5:0] count,//测试用

//output [23:0] data_temp_done //测试用

);

 

reg [9-1:0] temp_rx,temp_tx;

reg negedge_cs,temp_cs;

reg data_done;

reg [5:0] count_spi;

reg [24-1:0] data_temp;//24位数据暂存寄存器

reg [ftw_width-1:0] ftw_last;

reg [rom_len_width-1:0] ptw_last;

reg [4:0] i;

 

always @(negedge rst or posedge sclk)//mosi receive logic

begin

if(!rst)

    begin

    count_spi<=0;

    temp_rx<=8'd0;

    data_temp<=0;

    ftw_last<=0;

    ptw_last<=0;

    i<=0;

    end

    else if(cs==0)

    begin

    case(i)

    5'd0:

    begin

    data_temp[24-1:0]<={data_temp[24-2:0],mosi};//串行数据左移输入

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值