 
- UID
- 1023229
- 来自
- 中国
|

基于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 |
|