基于Verilog实现的DDS任意波形发生器 下载本文

集成电路课程设计

void main(){ int i,j = 0;;

FILE *fp;

fp=fopen(\

for(i=0;i<=256;i++){

//j=255*sin(2*3.14159/256*i)+0.5;//四舍五入

fprintf(fp,\ }

fclose(fp); }

- 11 -

集成电路课程设计

第二章 结果与讨论

第一节 实验中遇到的问题

本次课设整体来说还是比较简单的,但是还是碰到些难以解决的问题。其中,最大的问题就是综合的结果不正确,我们组就一直卡在那里找不到原因,后来经过老师的查阅才找到原因:我们rom查找表中含有负值,由于Verilog编程经验不足,没有注意到这一点,所以导致了问题的出现。

另外还有一些不足的地方,我们的查找表使用的是case语句,不能生成真正的rom;

第二,我们没有对查找表做优化,其中存储的是整个波形周期的采样点,其实,对于有一定周期的正弦函数而言,我们只需要存储它的四分之一个周期的数据,然后通过相位翻转等实现整个波形的复原,这样可以节省存储空间,然而我们由于能力有限,不能实现相关文档中所述的方法。

第二节 实验结论

以上就是本小组查阅资料学习的成果,经过编码,调试后,在modelsim下仿真得到了预期的结果,以下是仿真截图。

图2.1 正弦波仿真结果(choose_wave=00)

图2.2 余弦波仿真结果(choose_wave==01)

- 12 -

集成电路课程设计

图2.3 三角波仿真结果(choose_wave=10)

图2.4 锯齿波仿真结果(choose_wave=11)

由仿真图可以看出,在modelsim下所有功能都能够正确实现,前仿真顺利实现。后仿真时由于没有综合得到正确的结果,故不贴出仿真结果截图。以下是综合报告。由。于篇幅有限,在这里只能贴出部分报告。

1)延时信息

**************************************** Report : timing -path full -delay max -max_paths 1 -sort_by group Design : rom_sin

Version: D-2010.03-SP2

Date : Fri Jun 28 15:23:45 2013

****************************************

Operating Conditions: typical Library: typical Wire Load Model Mode: top

Startpoint: wr_data_reg[0]

- 13 -

集成电路课程设计

(rising edge-triggered flip-flop clocked by CLK_0) Endpoint: wr_data[0] (output port clocked by CLK_0) Path Group: CLK_0 Path Type: max

Point Incr Path -----------------------------------------------------------

clock CLK_0 (rise edge) 0.00 0.00 clock network delay (ideal) 0.00 0.00

wr_data_reg[0]/CK (DFFRHQXL) 0.00 0.00 r wr_data_reg[0]/Q (DFFRHQXL) 0.23 0.23 r wr_data[0] (out) 0.00 0.23 r data arrival time 0.23

clock CLK_0 (rise edge) 5.00 5.00 clock network delay (ideal) 0.00 5.00 output external delay -2.00 3.00 data required time 3.00 -----------------------------------------------------------

data required time 3.00 data arrival time -0.23 -----------------------------------------------------------

slack (MET) 2.77

***** End Of Report *****

2)constraint

**************************************** Report : constraint -verbose Design : rom_sin

Version: D-2010.03-SP2

Date : Fri Jun 28 15:26:02 2013

****************************************

Startpoint: wr_data_reg[0]

(rising edge-triggered flip-flop clocked by CLK_0) Endpoint: wr_data[0] (output port clocked by CLK_0) Path Group: CLK_0 Path Type: max

- 14 -

集成电路课程设计

Point Incr Path -----------------------------------------------------------

clock CLK_0 (rise edge) 0.00 0.00 clock network delay (ideal) 0.00 0.00

wr_data_reg[0]/CK (DFFRHQXL) 0.00 0.00 r wr_data_reg[0]/Q (DFFRHQXL) 0.23 0.23 r wr_data[0] (out) 0.00 0.23 r data arrival time 0.23

clock CLK_0 (rise edge) 5.00 clock network delay (ideal) 0.00 output external delay -2.00 data required time -----------------------------------------------------------

data required time data arrival time -----------------------------------------------------------

slack (MET)

Net: n382

max_transition 3.00 - Transition Time 0.39 ------------------------------

Slack 2.61 (MET)

Net: n331

max_capacitance 0.16 - Capacitance 0.01 ------------------------------

Slack 0.15 (MET)

Design: rom_sin

max_area 0.00 - Current Area 7970.05 ------------------------------

Slack -7970.05 (VIOLATED)

***** End Of Report *****

- 15 -

5.00 5.00 3.00 3.00 3.00 -0.23 2.77