DDS信号发生器设计方案讲解Word格式.docx

上传人:b****5 文档编号:21237954 上传时间:2023-01-28 格式:DOCX 页数:14 大小:373.01KB
下载 相关 举报
DDS信号发生器设计方案讲解Word格式.docx_第1页
第1页 / 共14页
DDS信号发生器设计方案讲解Word格式.docx_第2页
第2页 / 共14页
DDS信号发生器设计方案讲解Word格式.docx_第3页
第3页 / 共14页
DDS信号发生器设计方案讲解Word格式.docx_第4页
第4页 / 共14页
DDS信号发生器设计方案讲解Word格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

DDS信号发生器设计方案讲解Word格式.docx

《DDS信号发生器设计方案讲解Word格式.docx》由会员分享,可在线阅读,更多相关《DDS信号发生器设计方案讲解Word格式.docx(14页珍藏版)》请在冰豆网上搜索。

DDS信号发生器设计方案讲解Word格式.docx

常见的计算机显示器有CRT(CathodeRayTube,阴极射线管)显示器和液晶显示器,本次设计针对CRT显示。

CRT中的阴极射线枪发出电子束打在涂有荧光粉的荧光屏上,产生RGB三基色,合成一个彩色像素。

用逐行扫描的方式显示图像。

扫描从屏幕左上方开始,从左到右,从上到下,进行扫描。

每扫完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT对电子束进行消隐,每行结束时,用行同步信号进行行同步;

扫描完所有行,用场同步信号进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,预备下一场的扫描。

图2扫描轨迹

其中蓝色–行正程,红色–行逆程;

正程显示(实线),逆程消隐(虚线)

1.VGA显示标准

VGA标准共有5个信号:

R(红色)、G(绿色)、B(蓝色)、HS(行同步)、VS(场同步)

支持640*480分辨率

图3VGA显示标准(行)

表1行扫描时序

行扫描时序(单位:

像素,即输出一个像素的时间)

Ta

Tb

Tc

Td

Te

Tf

Tg

时间

96

40

8

640

800

图4VGA显示标准(场)

表2场扫描时序

场扫描时序(单位:

行,即输出一行的时间)

 

2

25

480

525

VGA显示标准

时钟频率:

25.175MHz(输出像素的频率)

行频:

31469Hz

场频:

59.94Hz(每秒图像刷新频率,约60Hz)

2.时序处理

分别将场同步信号和行同步信号做时间近似处理

表3对行同步做近似处理

us)

3.8

1.6

0.3

25.4

前项之和

5.7us

26us

表4对场同步做近似处理

行)

作近似处理

忽略

482

这样,便可通过计数分频得到行同步信号和场同步信号。

下面以开发板的50Mhz时钟信号为例,得到32Khz的行同步信号和64hz的长同步信号

图5时序处理图

三)波形显示原理

要显示波形,需要将波形数据存入存储器(简称wave_RAM)。

wave_RAM中可以写入读出波形数据。

下面将以幅值为256的正弦波为例,阐明波形显示原理。

图6波形显示结构图

每个时钟沿到来,从存储器中读出一个数,通过判断x_cnt与addr的关系以及y_cnt与data的关系是否满足条件,控制屏幕上以x_cnt和y_cnt为坐标的像素点的颜色值。

其中,x_cnt与addr的关系以及y_cnt与data的关系如下图7所示。

图7波形显示像素位置与存储器地址之间关系

x_cnt与存储器地址对应;

若高度等于数据值,则该处颜色为红色。

关键算法如下:

若在(m,n)处开始显示波形

当x_cnt=m时,addr=0

若y_cnt=n-data,则rgb=010;

当x_cnt=m+1时,addr=1

……

当x_cnt=m+i时,addr=i

四)字符显示原理

要显示字母、数字、符号、汉字等,需要自建字库(以后简称Char_ROM)。

Char_ROM中存放字模数据。

字模尺寸自行设定,例如英文字母、数字等可设置为16行*8列像素,汉字可设置为16行*16列像素。

图8字符库端口图

1.字模库设计

以16行*8列的字模1的设计及存储为例。

图9字模库设计举例

字库容量:

地址线与所有字符所占列数(决定于字符数量)有关,数据线与一个字符所占行数有关。

该例中数据线位数为16bit,地址为2bit。

2.字符显示思路:

1)确定屏幕显示起始位置,屏幕显示起始位置由行列计数值决定。

2)求Char_ROM地址

Char_ROM起始地址由所要显示的字符决定(可将地址用宏定义的方法与字符关联)。

3)读取该地址对应的数据

4)确定数据位和像素位置的关系

数据位和像素位置的关系由行计数值、起始行数、字符所占行数决定。

5)显示颜色,RGB赋值

若数据为1,则对应位置上的RGB赋值为字符色,否则RGB值赋值为背景色。

至此,DDS及VGA显示的原理介绍结束,下面开始进行系统设计及程序编写仿真。

三、系统设计实现

由于实验时间有限,在实际设计时并未对所生成波形做移相与改变幅值的处理,整体设计思路如下图10所示。

图10系统设计思路

一)参数设计

本次实验中所生成的正弦波共采样256个点,存储器采用8位地址线,数据为16bit。

设N为18位,M为地址线位数为8位,频率字

=(000000010000000000)2,则当输入时钟为vga_clk=25Mhz时,由DDS原理部分公式可推知当输出DDS输出频率fOUT=100Khz。

由于显示屏幕大小为640*480,需要显示两个周期的波形共256*2=512个点,设置屏幕显示横向范围为50到561,纵向范围为100到300;

字符显示范围为横向50到305,纵向310到325。

二)各模块实现程序及仿真结果

1.DDS模块

程序如下:

moduleDDS1(CLK,CTR,Q);

inputCLK;

inputCTR;

//input[17:

0]BK0;

//频率设置字

//input[3:

0]A;

//幅值设置字

//input[2:

0]BKI0;

//初相位设置字

output[7:

0]Q;

//DDS数字量输出

wire[17:

0]BK1;

0]BK2;

0]BK3;

wire[7:

0]addr;

0]Q0;

0]Q1;

reg[7:

0]Q2;

assignBK0=17'

b000000010000000000;

assignBKI2=BK2[17:

10];

//取N位的高M位

DFF32DDF1(CLK,BK0,BK1);

ADDADD1(CLK,BK1,BK2,BK3);

DFF32DDF2(CLK,BK3,BK2);

//相位累加器

ROM10ROM1(BKI2,CLK,Q0);

//正弦ROM查找表

ROM10triROM2(BKI2,CLK,Q1);

always@(posedgeCLK)

if(CTR)Q2<

=Q0;

elseQ2<

=Q1;

assignQ=Q2;

endmodule

仿真结果如下图11所示

图11DDS模块仿真结果

2.vga显示模块

moduleddsvga(vga_clk,clk,hs,vs,blank_n,red,green,blue,sync_n);

inputclk;

outpuths,vs;

outputblank_n;

output[9:

0]red;

0]green;

0]blue;

outputsync_n;

outputvga_clk;

wirer,g,b;

wire[3:

1]grb;

wirevs,hs,sync_n_r;

wirefclk,cclk;

wireclk_div;

wire[7:

0]data;

wire[4:

0]addrchar;

wire[15:

0]datachar;

integeri;

reg[7:

0]addr1;

reg[4:

0]addr1char;

reghs1,vs1;

wire[8:

0]y_cnt;

reg[9:

0]xcc;

reg[5:

0]fs;

0]cc;

//hangtongbu

reg[8:

0]ll;

//changtongbu

reg[3:

1]grbp;

div_2div_2(clk,clk_div);

ROMsinROM(addr,clk,data);

//testchartestchar(addrchar,clk,datachar);

assignvga_clk=clk_div;

assigngrb[2]=(grbp[2])&

hs1&

vs1;

assigngrb[3]=(grbp[3])&

assigngrb[1]=(grbp[1])&

always@(posedgeclk)begin

if(fs==53)fs<

=0;

elsefs<

=(fs+1'

b1);

end

assignfclk=fs[5];

always@(posedgefclk)begin

if(cc==29)cc<

=5'

b00000;

elsecc<

=cc+1'

b1;

assigncclk=cc[4];

always@(posedgecclk)begin

if(ll==481)ll<

=9'

b0;

elsell<

=ll+1'

assigny_cnt=ll;

//生成行同步,场同步信号

always@(ccorll)begin

if(cc>

23)hs1<

=1'

elsehs1<

if(ll>

479)vs1<

elsevs1<

always@(posedgevga_clk)

if(blank_n)

begin

if(xcc==639)xcc<

elsexcc<

=xcc+1'

elsexcc<

always@(xcc,y_cnt,data)

begin

if(xcc>

=10'

d200&

&

xcc<

d455)

addr1<

=xcc-8'

d200;

if(y_cnt==9'

d300-data)grbp<

=3'

b001;

elsegrbp<

b000;

else

begin

grbp<

end

/****************/

always@(posedgeclk_div)

if(y_cnt>

=9'

d100&

y_cnt<

d115)

if(xcc==10'

d500)

addr1char<

=0;

//求地址

elseif(xcc>

=10'

d501&

xcc<

d516)

addr1char<

=addr1char+1'

end

0]dis_bit=10'

d115-y_cnt;

always@(posedgeclk_div)//数据位

grbp<

if(y_cnt>

y_cnt<

d115&

xcc>

if(datachar[dis_bit])

=3'

b010;

//RGB赋值

elsegrbp<

assignaddr=addr1;

assignaddrchar=addr1char;

assignhs=hs1;

assignvs=vs1;

assignr=grb[2];

assigng=grb[3];

assignb=grb[1];

assignblank_n=hs&

vs;

assignsync_n_r=1'

assignsync_n=sync_n_r;

assignred={10{r&

blank_n}};

assigngreen={10{g&

assignblue={10{b&

endmodule

最终显示结果如图12所示

图12最终结果显示

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1