EDA程序设计--多功能信号发生器的设计

实训题目:多功能信号发生器的设计

 

1  系统设计

1.1 设计要求

1.1.1 设计任务  

设计并实现一个基于FPGA的多功能信号发生器。

1.1.2 性能指标要求 

1.能够产生两种以上输出波形(正弦波、三角波、锯齿波等)。

2.输出的波形的频率允许有多种选择。

3.输出波形的幅度在 1V~5V 范围内。

4.输出的波形能够用示波器测量。

1.2 设计思路及设计框图

1.2.1设计思路

多功能信号发生器的原理框图如图所示。其中,CLKGEN是分频器,提供的50MHz的主频率进行分频,以得到满足多功能信号发生器设计需要的时钟频率。

之后是三选一 数据选择器,分别为8hz,13hz,18hz。

Lpm_counter256是参数可设置的计数器,用于产生lpm_rom256的8位地址,并从q[7..0]端输出。

lpm_rom只读存储器,用于存放多功能信号发生器的波形数据信号。

设计了三个波形为的正弦波,方波,三角波。结果由输出端q[7..0]输出到四选一选择器,由sel[1..0]选择控制。

1.2.2总体设计框图

2  各个模块程序的设计

数据选择器,分频器程序见下表
计数器模块:计数器的元件生成时,首先在执行File然后New,打开一个分频器计数器锯齿波正弦波三角波方波输出波形选择器新的模块或者原理图文件编辑窗口,双击窗口并选择libraries栏中的选着ari themtic的lpm couter(计数器) lpm元件,之后点击ok并在弹出窗口中完成对参数的设置之后就可得到一个计数器元件。波形 ROM模块:为了将数据装入ROM中,在加入并设置ROM之前,应首先新建一个Memory initial izationfile文件,并设置波形最后保存后缀为,mif,生成的存储器初值设定文件保存在工程的目录中,完成存储器初始值设定后,就可以加入波形只读存储器ROM,在library中选着storage中的lpm rom即只读存储器ROM的lpm元件,输出位为8位,字数是256,采用但时钟控制方式。由于我的设计出的波形有四种,所以我要加的ROM有四个元件,他们分别输出锯齿波,方波,正弦波还有三角波,生成四个元件后,波形ROM模块就完成了。

(clkin,clkout,rst_n);    //0.1S->10Hz

input clkin,rst_n;
output reg clkout;


reg[WIDTH-1:0] cnt;
always @(posedge clkin,negedge rst_n) //50_000_000MHz
begin                                 //1s->1Hz 50_000_000/1=50_000_000/2=25_000_000
		if(!rst_n)  cnt=0;
		else if(cnt<N/(2*M)-1)  cnt=cnt+1;
		else        cnt=0;
		
end

always @(posedge clkin,negedge rst_n)
begin
		if(!rst_n)  clkout=0;
		else if(cnt==N/(2*M)-1)  clkout=~clkout;
		else clkout=clkout;
end

endmodule

数据选择器:
`timescale 1 ps / 1 ps
// synopsys translate_on
module mux_04 (
	data0x,
	data1x,
	data2x,
	data3x,
	sel,
	result);

文章借鉴于此纷传

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值