打印
[CPLD]

基于Xilinx FPGA的通用信号发生器

[复制链接]
1139|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kkzz|  楼主 | 2012-11-25 13:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、系统原理利用FPGA芯片,用verilog语言编写逻辑,通过DAC0832LCN进行DA转换,产生递增斜波、递减斜波、三角波、递增阶梯波。
DAC0832LCN数字输入端具有双重缓冲功能,可以双缓冲、单缓冲或直接输入,适用于多个模拟量同时输出的场合。主要特性为:
分辨率:8位
建立时间:1us
功耗:20mW
输入:TTL
DAC0832LCN的结构框图如下所示:

时序如下图所示:

关键步骤:1.使用Xilinx XC2S200型FPGA器件设计实现
2.使用电子EDA实验开发系统的通用IO口,向DAC0832LCN芯片的D0—D7送数据,以产生不同的输出波型。
3.使用Xinlix ISE 6.3软件进行Verilog HDL开发。
源代码1.Verilog源代码,sig_gen.v
module sig_gen(sysclk, rst_n, mode, data, CS, WR);
     input sysclk, rst_n;
     input wire[1:0] mode;
     output wire[7:0] data;
     output reg CS, WR;

     reg [7:0] counter;
     reg addsub;

     always @(posedge sysclk or negedge rst_n)
     begin
            if (!rst_n)
            begin
                   counter = 0;
                   addsub = 0;
                   CS = 0;
                   WR = 0;
            end
            else
            begin
                   case (mode)
                          2'b00 : counter = counter + 1;    //递增斜波
                          2'b01 : counter = counter - 1;    //递减斜波
                          2'b10 :    // 三角波

相关帖子

沙发
kkzz|  楼主 | 2012-11-25 13:54 | 只看该作者
begin

                                 if (addsub == 0)

                                 begin

                                        counter = counter + 1;

                                        if (counter == 254)

                                               addsub = 1;

                                        else

                                               addsub = 0;

                                 end

                                 else

                                 begin

                                        counter = counter - 1;

                                        if (counter < 1)

                                               addsub = 0;

                                        else

                                               addsub = 1;

                                 end

                          end

                          2'b11 : counter = counter + 32;  //递增阶梯波

                          default : counter = 0;

                   endcase

            end



     end



     assign data = counter;



endmodule

2.引脚分配源代码,sig_gen.ucf



net sysclk loc = p80; //1k时最好

net rst_n loc = p57;

net CS loc = p46;

net WR loc = p48;



net mode<1> loc = p102;

net mode<0> loc = p100;



net data<7> loc = p14;

net data<6> loc = p16;

net data<5> loc = p18;

net data<4> loc = p21;

net data<3> loc = p23;

net data<2> loc = p27;

net data<1> loc = p30;

net data<0> loc = p33;

利用此系统可实现各种波形的生成,对初学者意义重点,重温经典似乎又让我们走入了过去奋斗过的日日夜夜,生命如斯,分分秒秒。

使用特权

评论回复
板凳
zhoumingzr| | 2012-11-30 15:47 | 只看该作者
看看

使用特权

评论回复
地板
kunhuangon| | 2012-11-30 16:00 | 只看该作者
。。。。。权当学习了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

315

主题

10743

帖子

13

粉丝