首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

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

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

基于Xilinx的FPGA实现信号发生器,很久就在酝酿了,因为信号的发生是整个FPGA处理中至关重要的一个环节,今天在此写出来与大家共勉,重温那些经典。一、系统原理利用FPGA芯片,用verilog语言编写逻辑,通过DAC0832LCN进行DA转换,产生递增斜波、递减斜波、三角波、递增阶梯波。DAC0832LCN数字输入端具有双重缓冲功能,可以双缓冲、单缓冲或直接输入,适用于多个模拟量同时输出的场合。主要特性为:分辨率:8位建立时间:1us功耗:20mW输入:TTLDAC0832LCN的结构框图如下所示:[[wysiwyg_imageupload:616:]]           时序如下图所示:[[wysiwyg_imageupload:617:]]                 关键步骤:1.使用Xilinx XC2S200型FPGA器件设计实现2.使用电子EDA实验开发系统的通用IO口,向DAC0832LCN芯片的D0—D7送数据,以产生不同的输出波型。3.使用Xinlix ISE 6.3软件进行Verilog HDL开发。源代码1.Verilog源代码,sig_gen.vmodule 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 :    // 三角波                          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; endmodule2.引脚分配源代码,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; 利用此系统可实现各种波形的生成,对初学者意义重点,重温经典似乎又让我们走入了过去奋斗过的日日夜夜,生命如斯,分分秒秒。转载自:http://blog.chinaaet.com/detail/30215.html
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表