正弦函数EDA设计报告_第1页
正弦函数EDA设计报告_第2页
正弦函数EDA设计报告_第3页
正弦函数EDA设计报告_第4页
正弦函数EDA设计报告_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、设计目的 1. 掌握quartusii等eda工具软件的基本使用;2. 熟悉verilog硬件描述语言编程及其调试方法; 3. 学习“自顶向下”的设计思路; 4.提高fpga开发能力,进而工程设计能力。2、 设计任务及要求 用verilog hdl设计如下系统: 1、系统可以根据输入的角度(或弧度)x,显示相应的sin(x)数值,保证角度精度0.1度。 2、编辑测试激励文件,进行相关测试,注意测试的完备性。 3、根据de2板资源,设计下载测试方案,并且完成硬件下载测试。 三、设计步骤1. 顶层模块 顶层模块包括rom表查找模块、led显示模块的调用以及其他的一些简单处理。 rom查找表中只

2、有第一象限角度的正弦值,而其他三个象限的函数值还要通过一些简单的转化和计算。根据自变量的值,进行rom表的查找,取出函数值之后,通过简单处理后调用led显示模块,把函数值显示在de2板的数码管上。2. rom查找表模块 rom表是先使用matlab工具生成关于正弦函数的mif文件,然后在quartus中调用mif文件生成一个rom查找表,用于函数调用。 3. led显示模块 led显示模块使用了de2板上的hex0hex5这6个数码管,hex5用于显示函数值的正负号,负值有“-”显示,正值直接不显示。hex4显示一个整数位,hex0hex3显示四个小数位。4. 引脚配置及下载调试 引脚配置表如

3、下: 表3-1 引脚分配toto_de2locationclkclock_50pin_n2rst_nkey2pin_p23a8:0sw12sw4pin_p2pin_af14b3:0sw3sw0pin_ae14pin_n25hex0hex0.hex1hex1.hex2hex2.hex3hex3.hex4hex4.hex5hex5. 我们使用的开发板是de2板,用usb下载调试。 四、设计过程1.顶层模块module sinx(clk,rst_n,a,b,hex0,hex1,hex2,hex3,hex4,hex5);input clk,rst_n;input 8:0 a; input 3:0 b;

4、output 6:0 hex0,hex1,hex2,hex3,hex4,hex5;reg 3:0 data0,data1,data2,data3,data4,data5;wire 13:0 q;reg 9:0 addr;reg 12:0 c;reg 13:0 qr;always (posedge clk or negedge rst_n) begin if (!rst_n) begin c =13d0; addr =10d0; end else begin c = a*4d10+b; if (2700 c =3600) begin addr = 3600-c; data0 =4ha; end

5、else if(1800 c =2700) beginaddr = c-1800;data0 =4ha;endelse if (900 c =1800) begin addr =1800-c;data0 =4hb;end else begin addr =c; data0 =4hb;end end endsin_romsin_rom_inst (.address ( addr ),.clock ( clk ),.q ( q );reg 2:0 num;always (posedge clk or negedge rst_n)begin if (!rst_n) begin num =3d0; q

6、r =14d0; end else begin qr = q; num = num+1b1;case(num) 3d1 : data1 =qr%4d10;3d2 : data2 =(qr/4d10)%4d10;3d3 : data3 =(qr/8d100)%4d10;3d4 : data4 =(qr/10d1000)%4d10;3d5 : data5 =(qr/10d10000);default : ;endcaseif(num =3d6) num =3d0;endendled led0(rst_n,data0,hex5); /符号位led led1(rst_n,data1,hex0); /最

7、低位led led2(rst_n,data2,hex1);led led3(rst_n,data3,hex2);led led4(rst_n,data4,hex3);led led5(rst_n,data5,hex4);endmodule 说明:1)clk:时钟;2)rst_n: 复位信号;3)a: 函数自变量的整数部分,对应de2板的sw4sw12。4)b: 函数自变量的小数部分,对应de2板的sw0sw3。5)hex0hex5:显示对应的函数值,对应de2板的led0led5。 2. rom查找表模块使用matlab工具生成正弦函数的mif文件。在0pi上取1800个点,数据宽度为14,文

8、件深度为1024。width=14; %数据宽度为14位; depth=1024; fidc=fopen(e:sin_matlab.mif,wt); %以wt的形式打开,n为换行 % 写入 sin_matlab.mif % fprintf(fidc,width=%d;n,width); fprintf(fidc,depth=%d;n,depth); fprintf(fidc,address_radix=uns;n); fprintf(fidc,data_radix = uns;n); fprintf(fidc,content beginn); for(x=1:901) fprintf(fidc

9、,%d:%d;n,x-1, round(10000*sin(pi*(x-1)/1800) ) ;end for(x=901:1023)fprintf(fidc,%d:%d;n,x, 0 ) ; endfprintf(fidc,end;); fclose(fidc); 说明: 为了便于导入quartus软件中进行分析、计算和显示,我们将函数值扩大10000倍。3. led显示模块 module led( rst_n,data_in,sm_db);input rst_n;input3:0 data_in;output6:0 sm_db;reg6:0 sm_db;always (data_in or

10、 rst_n) begin if(!rst_n) sm_db = 7b1000000; else begincase (data_in)4h0: sm_db = 7b1000000;4h1: sm_db = 7b1111001;4h2: sm_db = 7b0100100;4h3: sm_db = 7b0110000;4h4: sm_db = 7b0011001;4h5: sm_db = 7b0010010;4h6: sm_db = 7b0000010;4h7: sm_db = 7b1111000;4h8: sm_db = 7b0000000;4h9: sm_db = 7b0011000;4h

11、a: sm_db = 7b0111111; /显示负号4hb: sm_db = 7b1111111; /正号,不显示任何值default: ;endcaseend endendmodule说明:1)data_in:输入的要显示的数值或字符;2)sm_db:将要在对应的数码管上显示数值或字符的段码;3)rst_n:复位信号。4. 系统仿真我们选取15.0的角度值进行仿真验证,即a9:0=10b0000001111,b3:0=4b0000,得到函数值0.2588的结果,仿真结果如图4.1和图4.2。图4.1 输入的角度值为15.0图4.2 得到的函数值0.2588五、硬件下载及调试把程序下载到fpga上进行程序硬件调试。六、总结体会 设计中,mif文件给我们提供了很大的便利,通过matlab工具,直接生成mif文件,然后在quartus中生成rom

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论