下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、eda 实验指导书2011年9月30日目 录1. 实验一 led实验 (验证性实验) 2. 实验二 led点阵实验(综合性实验) 3. 实验三 lcd显示实验(设计性实验) 实验一:led实验一、实验目的 1. 熟悉ise8.2开发环境,掌握工程的生成方法;2. 熟悉seed-xdtk_v4实验环境; 二、实验内容 1. 创建工程; 2. 添加hdl资源文件; 3. 配置一个应用程序完成设计。 三、实验准备 1. 通过usb口下载电缆将计算机的usb口及seed-fem025板的j9 连接好; 2. 启动计算机,打开seed-xdtk_v4实验箱电源开关。观察seed-fem025板上的5v(
2、d11)的电源指示灯是否均亮。若有不亮的,请断开电源,检查电源。 四、实验步骤 1. 创建工程 1) 双击桌面xilinx ise8.2快捷方式打开ise工程管理器(project navigator); 2) 打开project navigator后,选择file new project,弹出新建工程对话框; 3) 在工程路径中单击“”按钮,将工程指定到如下目录d: 02. v4_lab,单击确定; 4) 在工程名称中输入led,点击next按钮,如图1.1所示;图1.15) 弹出器件特性对话框。器件族类型(device family)选择“virtex4”,器件型号(device)选“xc
3、4vsx25 ff668 -10”,综合工具(synthesis tool)选“xst (vhdl/verilog)”,仿真器(simulator)选“ise simulator”,如图1.2; 图1.26) 单击next按钮,弹出创建新资源(create new soure)对话框,可以使用这个对话框来创建新的hdl资源文件,或者也可以创建工程后,新建hdl资源文件,如图1.3; 图1.37) 单击next按钮,弹出添加存在资源对话框;可以使用这个对话框来添加已经存在的hdl资源文件,或者也可以创建工程后,添加hdl资源文件;在本实验中我们采用创建工程后,添加hdl资源文件的方式,如图1.4
4、;图1.48) 单击next按钮,将弹出工程建立完成对话框,单击finish按钮完成工程建立流程; 9) 观察工程资源管理窗口,将会看到工程已经建立成功,如图1.5。图1.52. 添加hdl资源文件1) 选择project add source命令,弹出的文件添加对话框;或者右键单击sources中的led弹出的文件添加对话框,如图1.6;图1.62) 在弹出的对话框中将文件添加路径指向d:02.v4_lab.2led文件夹下,选择led.v文件,单击open按钮,如图1.7; 图1.73) 在弹出的对话框框中单击ok,如图1.8; 图1.84) 单击ok按钮。资源文件添加完成如图1.9。 图
5、1.93. 设计实现1) 在工程的资源操作窗(processes),双击implement design; 如图1.10图1.102) 当设计实现(implement design)运行的过程中,展开设计实现命令(implement design),会看到实现过程中,首先是进行综合(synthesis),然后才依次完成实现的步骤。4. 管脚约束实现与重新实现1) 工程的sources窗口,右键单击sources中的led.v文件,弹出的文件添加对话框,如图1.11;图1.112) 添加led.ucf文件,顺序与上述添加hdl资源文件相类似如图1.12-1.14; 图1.12 鼠标左键单击“打开
6、(o)”图1.13 鼠标左键单击“ok”图1.14 鼠标左键单击“led左侧”3) 在processes窗口,扩展user constraints并双击assign package pins打开pace,如图1.15;注意在pace能启动之前必须先进行综合。 图1.154) 在pace中浏览design object listi/o pins窗口,可看到所列的信号名称和信号方向是output还是input。在loc栏里每个信号对应的fpga的管脚。信号连接如下,在fpga的管脚分配需查看原理图,如图1.16;clk_in: 管脚编号为af12 led_data0: 管脚编号为ad20 其余管脚
7、在此就不一一列出了。 图1.165) 在所有信号链接完成后,然后选择保存文件,如图1.17箭头所示位置; 图1.176) 在device architecture窗口放大直到可以看清每个管脚;如图1.18;注意:图中粉红色彩条说明管脚在同一个bank中。单击每个蓝色i/o管脚,则对应着design object listi/o pins窗口相应的管脚。 图1.187) 单击菜单栏中的file exit,退出pace; 8) 单击工程中sources窗口中的led.ucf文件,然后双击prosesses窗口中user constraints目录下的edit constraints (text),
8、就可以看到由pace生成的led.ucf管脚约束文件;当然我们也可以使用该命令,直接在文本中编写led.ucf文件; 图1.199) 在工程的资源操作窗(processes),双击implement design;对设计重新实现; 10) 本例程中led.ucf文件早已存在,我们可以使用上文介绍过的文件添加方式将led.ucf文件直接添加到工程文件中。 5. 下载配置fpga 1) 在工程的sources窗口单击顶层文件led.v文件,展开processes窗口中的generate programming file,双击configure device (impact),如图1.20;图1.2
9、02) 弹出welcome impact对话框后,选择“configure devices using boundary-scan(jtag)”,单击finish按钮,如图1.21; 图1.213) 在弹出的器件添加对话中,第一个器件选择bypass按钮,如图1.22;第二个器件也选择bypass按钮,如图1.23;图1.22图1.234) 最后一个器件单击所要下载的led.bit文件(此文件所在目录不可有中文),单击open按钮,如图1.24;会弹出如图1.25的“add virtex-/ii pro/virtex04.”对话框,单击ok按钮后弹出一个警告信息,单击ok按钮; 图1.24图1
10、.255) 单击xc4vsx25这个device,变成绿色,且 impact processes operations窗口出现可执行的操作; 如图1.26和1.27图1.26图1.276) 在图1.27中,双击impact processes operations窗口中的program,或者在图1.26中,直接右键单击xc4vsx25这个device,选择program。会弹出programming properties对话框,如图1.28所示,单击ok按钮; 图1.28程序开始下载,如果下载程序成功则出现program succeeded,否则如果失败则出现program failed,需要
11、重新查找问题(尝试重新下载或者断电后重新下载程序);7) 程序下载成功后,可观察到seed-xdtk_mboard板卡上led灯依次点亮。 五、实验程序led.vtimescale 1ns / 1ps/ company: / engineer: / create date:/ design name: / module name: led / project name: / target devices: / tool versions: / description: / dependencies: / revision: / revision 0.01 - file created/ add
12、itional comments: /define div_factor 14'h3f98module led(clk_in, nrst, cpld_e,led_data,ad_ncs,da_ncs,usb_ncs,lcd_ncs ); input clk_in; input nrst; output 1:0 cpld_e; output 7:0 led_data;output usb_ncs;output ad_ncs;output da_ncs;output lcd_ncs; reg clk_out = 1'b1;reg 7:0 led_data =8'h00;re
13、g 13:0 div_counter = 14'h000;reg 11:0 clk_counter = 12'h000; /cpld功能切换assign cpld_e = 2'b10;/其他芯片功能禁止 assign usb_ncs = 1'b1;assign ad_ncs = 1'b1;assign da_ncs = 1'b1; assign lcd_ncs = 1'b1;always(posedge clk_in) beginif(!nrst) beginclk_out <= 1'b1;div_counter <=
14、 10'h000; endelse beginif(div_counter <= div_factor ) begindiv_counter <= div_counter + 1; endelse begindiv_counter <= 12'h000;clk_out <= !clk_out; end end end always (posedge clk_out) begin clk_counter = clk_counter+1; case(clk_counter) 12'h001: led_data<=8'h01; 12
15、9;h17d: led_data<=8'h02; 12'h2fa : led_data<=8'h04; 12'h477: led_data<=8'h08; 12'h5f4: led_data<=8'h10; 12'h771: led_data<=8'h20; 12'h96e: led_data<=8'h40; 12'hb6b: led_data<=8'h80; 12'hce8: clk_counter = 10'h000; defau
16、lt: clk_counter = clk_counter; endcase endendmodule六、思考题:1 fpga的中英文全称各是什么?2 实验箱所用fpga型号是什么?共有多少个引脚?引脚可以分为哪几类?3 概述对fpga进行编程下载的流程。4 实验程序中,输入输出引脚各有几个?两个always块语句各自的作用是什么?实验二:led点阵实验一、实验目的1. 熟悉ise8.2开发环境,掌握工程的生成方法; 2. 熟悉seed-xdtk_v4实验环境; 3. 了解hdl语言在fpga中的使用; 4. 了解定时器的hdl实现。 二、实验内容1. 定时时钟设计; 2. led点阵点亮。
17、三、实验说明 本实验的功能是将seed-xdtk_mboard板上led点阵点亮(合众达图标)。根据硬件原理,通过对fpga的输入时钟进行分频,实现一个定时器,该定时器主要用于定时扫描控制seed-xdtk_mboard板卡上的led点阵。 seed-xdtk_mboard板上led点阵共有16*16点,既有16根控制线与16根数据线。 控制线用来选中一组led灯,16根数据线用来点亮相应的led灯。四、实验准备 1. 通过usb 口下载电缆将计算机的usb 口及seed-fem025 板的j9 连接好;2. 启动计算机,打开seed-xdtk_v4 实验箱电源开关。观察seed-fem025
18、 板上的5v(d11)的电源指示灯是否均亮。若有不亮的,请断开电源,检查电源。五、实验步骤1、 打开ise8.2,装载dot.ise工程文件; 注意:选择器件(device)为“xc4vsx25 ff668 -10”其他步骤同实验一,请参考。2、 双击configure device (impact)命令,打开impact窗口; 3、 弹出welcome impact对话框后,选择“configure devices using boundary-scan(jtag)”,单击finish按钮; 4、 在弹出的器件添加对话中,第一个器件选择bypass按钮;第二个器件也选择bypass按钮;最后
19、一个器件单击所要下载的dot.bit文件(此文件所在目录不可有中文),单击open按钮,弹出“add virtex-/ii pro/virtex04.”对话框,单击ok按钮后弹出一个警告信息,单击ok按钮; 5、 单击xc4vsx25这个device,变成绿色,且 impact processes operations窗口出现可执行的操作; 6、 双击impact processes operations窗口中的program,或者直接右键单击xc4vsx25这个device,选择program。弹出programming properties对话框,单击ok按钮; 7、 程序开始下载,如果下
20、载程序成功则出现program succeeded,否则如果失败则出现program failed,需要重新查找问题(尝试重新下载或者断电后重新下载程序); 8、 程序下载成功后,观察led点阵点亮(合众达图标)。 六、实验程序 dot.v/dot.v:程序顶层文件,对输入时钟进行分频,依次点亮相应的led; /dot.ucf:fpga用户约束文件。 timescale 1ns / 1ps/ company: / engineer: / / create date:/ design name: / module name: dot / project name: / target device
21、s: / tool versions: / description: / dependencies: / revision: / revision 0.01 - file created/ additional comments: module dot(clk_in, nrst, cpld_e,dot_data , dot_con ,ad_ncs , da_ncs ,usb_ncs,lcd_ncs );input clk_in;input nrst;output 1:0 cpld_e;output 15:0 dot_data;output 15:0dot_con;output usb_ncs;
22、output ad_ncs;output da_ncs;output lcd_ncs;reg clk_out = 1'b1;reg 15:0dot_con =16'h0000;reg 15:0dot_data =16'h0000;reg 13:0 div_counter = 14'h000;reg 3:0 cnt= 4'h0; parameter div_factor = 14'h3f98;/cpld功能切换assign cpld_e = 2'b11;/其他芯片功能禁止 assign usb_ncs = 1'b1;assign a
23、d_ncs = 1'b1;assign da_ncs = 1'b1; assign lcd_ncs = 1'b1; /时钟分频always(posedge clk_in)beginif(!nrst)beginclk_out <= 1'b1;div_counter <= 10'h000;endelsebeginif(div_counter <= div_factor )begindiv_counter <= div_counter + 1;endelsebegindiv_counter <= 12'h000;clk_o
24、ut <= !clk_out;endendend/点亮点阵 always(posedge clk_out)begincnt = cnt+1;if(cnt = 4'h0)begindot_con <= 16'h8000;dot_data <= 16'hd800;endelse if(cnt = 4'h1) begin dot_con <= 16'h4000;dot_data <= 16'h6c00;end else if(cnt = 4'h2) begindot_con <= 16'h2000;d
25、ot_data <= 16'hb600; end else if(cnt = 4'h3) begin dot_con <= 16'h1000;dot_data <= 16'hdb00;end else if(cnt = 4'h4) begin dot_con <= 16'h0800;dot_data <= 16'h6d80; end else if(cnt = 4'h5) begin dot_con <= 16'h0400;dot_data <= 16'h2480; end
26、 else if(cnt = 4'h6) begin dot_con <= 16'h0200;dot_data <= 16'h1240; end else if(cnt = 4'h7) begin dot_con <= 16'h0100;dot_data <= 16'h0920; end else if(cnt = 4'h8) begin dot_con <= 16'h0080;dot_data <= 16'h0490;end else if(cnt = 4'h9) begin
27、dot_con <= 16'h0040;dot_data <= 16'h0248;end else if(cnt = 4'ha) begin dot_con <= 16'h0020;dot_data <= 16'h0124; end else if(cnt = 4'hb) begin dot_con <= 16'h0010;dot_data <= 16'h0092;end else if(cnt = 4'hc) begindot_con <= 16'h0008;dot_da
28、ta <= 16'h0000; endelse if(cnt = 4'hd) begindot_con <= 16'h0004;dot_data <= 16'h0000;end else if(cnt = 4'he) begindot_con <= 16'h0002;dot_data <= 16'h0000; end else if(cnt = 4'hf) begindot_con <= 16'h0001;dot_data <= 16'h0000; end end endm
29、odule七、思考题1、clk_out是clk_in的几分频?2、.ucf文件是做什么用的?3、实验中的点阵led是规格是什么?程序中用哪些引脚来控制led?实验三:lcd显示实验(一)一、实验目的1. 熟悉ise8.2开发环境,掌握工程的生成方法; 2. 熟悉seed-xdtk_v4实验环境; 3. 了解lcd的hdl实现; 4. 了解memory模块的使用。 二、实验内容 1. fpga的memory模块的生成及例化; 2. 系统时钟设计; 3. lcd点亮。 三、实验例程1、lcd芯片介绍lcd模块采用是lcm122326图形点阵模快,该模块是由2块nju6450芯片构成,不带字库。其工
30、作时序图如下图所示: lcd模块行列分配:lcd初始化如下所示 2 例程包含文件1) main.v:程序顶层文件,实现lcd的初始化以及液晶显示; 2) v4_dcm.xaw:dcm的ip核,将外部输入时钟(50m)进行10分频; 3) clk_div.v:系统运行时钟分频文件,将系统运行时间进行分频,提供100k的模块处理时钟; 4) lcd_display.v:lcd初始化,以及数据显示文件; 5) lcd_write.v:lcd写操作函数文件; 6) v2_lcd_ziku.xco:汉字字库存储文件; 7) main.ucf:fpga用户约束文件。 /main.vtimescale 1n
31、s / 1psmodule main(clk, nprocessor_reset_z, d, lcd_e, lcd_a0, lcd_r_nw, lcd_led, lcd_ncs, cpld_e, ad_ncs, da_ncs, usb_ncs,); input clk;/100m aj15 input nprocessor_reset_z;/ah5 inout 7:0 d; output 1:0 lcd_e; output lcd_a0; output lcd_r_nw; output lcd_led; output lcd_ncs; output 1:0 cpld_e; output ad_
32、ncs; output da_ncs; output usb_ncs;wire clk_locked;wire 7:0 data_out;wire clk_100k;parameter div_factor = 100;/lcd功能始能assign lcd_ncs = 1'b0;/cpld功能切换 assign cpld_e = 2'b11;/其他芯片功能禁止 assign ad_ncs = 1'b1;assign da_ncs = 1'b1;assign usb_ncs = 1'b1;/系统时间分频/输入 50m 输出10mv4_dcm clk_div
33、_10m ( .clkin_in(clk), .rst_in(!nprocessor_reset_z), .clkdv_out(clk_10m), .clkin_ibufg_out(), .clk0_out(), .locked_out(clk_locked) );/模块时间分频/输入 10m 输出100kclk_div clk_div_100k ( .clk_in(clk_10m), .nrst(clk_locked), .clk_out(clk_100k) );defparam clk_div_100k.div_factor = div_factor;/ lcd test/reg r_nw
34、 = 1'b1;reg 6:0 zimo_num = 7'h00;reg 6:0 mem_addr = 7'h00;reg lcd_en = 1'b0;reg 6:0 col_addr = 121;reg 1:0 page_addr = 2'b11;reg 4:0 disp_addr = 5'h00;wire 7:0 lcd_data;wire lcd_done;reg 16:0 tlcd_counter = 17'h00000;lcd_display lcd (/输入参数 .clk(clk_100k), .r_nw(r_nw), .di
35、sp_addr(disp_addr), .page(page_addr), .col_addr(col_addr), .disp_data(lcd_data), /输出参数 .lcd_e(lcd_e), .lcd_a0(lcd_a0), .lcd_r_nw(lcd_r_nw), /输入、出参数 .lcd_db(d), /输出参数 .lcd_led(lcd_led), .data_out(), .done(lcd_done) );v4_lcd_ziku zimo(.addr(mem_addr),.clk(clk_100k),.dout(lcd_data),.en(lcd_en);always(p
36、osedge clk_100k) beginif(tlcd_counter = 17'h0c350)/0.5s begindisp_addr <= disp_addr - 1; /显示地址tlcd_counter <= 17'h00000; endelse begintlcd_counter <= tlcd_counter + 1; end if(!lcd_done) beginr_nw <= 1'b0;lcd_en <= 1'b0; endelse begin r_nw <= 1'b1;if(!r_nw) begin
37、lcd_en <= 1'b1;mem_addr <= zimo_num;if(zimo_num = 95)zimo_num <= 0;elsezimo_num <= zimo_num + 1;case(zimo_num)0: begincol_addr <= 23;page_addr <= 2'b00; end16: begincol_addr <= 23;page_addr <= 2'b01; end32: begincol_addr <= 68;page_addr <= 2'b00; end48:
38、begincol_addr <= 68;page_addr <= 2'b01; end64: begincol_addr <= 113;page_addr <= 2'b00; end80: begincol_addr <= 113;page_addr <= 2'b01; enddefault:col_addr <= col_addr - 1;endcase endelse beginlcd_en <= 1'b0; end end endendmodule3 模块划分图 4 memory 模块的建立及其例化1、 双击
39、processes窗口中的creat new source,弹出新资源向导窗口; 2、 在弹出新资源向导窗口,选择ip (coregen & architecture wizard),在file name 栏里输入v4_lcd_ziku; 3、 单击next按钮,弹出select ip窗口,依次展开memories & storage element和rams & roms目录,选择sigle port block memory v6.2; 4、 单击next按钮,显示新建资源信息,单击finish按钮; 5、 弹出sigle port block memory窗口,在
40、port configuration选项卡中选中read only;memory size选项卡中width 填写8。depth填写96;write mode 选项卡中选中read after write;单击next命令; 6、 单击next按钮,primitive selection选项卡中选中 optimize for area,design options选项卡中选中 enable pin,output register options 选项卡中 additional output pins stages 填写 0,单击next命令;7、 单击next按钮,不选中implementat
41、ion option选项卡;管脚极性选项卡中选择上升沿有效或者高电平有效;8、 单击next按钮,simulation mode options选项卡中选中disable waring messages;initial contents选项卡中 global init value 填写 0,选中 load init file添加hezhongda.coe(路径为d:02.v4_lab lcdcoe); 9、 单击 generate 命令,生成v4_lcd_ziku.xco文件;10、memory模块的例化与dcm模块例化方法一致,请参考键盘实验中关于该部分的内容。下图中,黑色部分为memory模块的例化语句。 四、实验准备1. 将光盘下03. examples of program02. v4_lab文件夹拷贝到d:盘根目录下; 2. 通过usb口下载电缆将计算机usb口及seed-fem025板的j9 连接好; 3. 启动计算机,打开seed
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 制定紧急情况数据备份恢复计划
- 外墙抹灰分格缝设置施工工艺
- 分析区域差异对市场规模的制约
- 2025年版R1快开门式压力容器操作考试内部模拟题库附答案
- 2026学年安徽省阜阳市二年级数学期末评估思维拓展题(详细参考解析)详细答案和解析
- 2026年人教鄂教版小学科学六年级下册期末学情测试卷及答案(二套)
- 第六单元 欧洲歌剧 教学设计-2025-2026学年高中音乐人音版(2019)必修6 音乐与戏剧
- 六氟化硫(SF6)电气设备安全操作培训
- 物业管理服务提升策略及方案
- 企业级CRM系统实施与优化全案指南
- 2025内蒙古乌海市国创数字产业发展有限责任公司招聘和考察更正笔试历年参考题库附带答案详解
- 黑龙江哈尔滨市2026届高考第一次模拟考试数学试题+答案
- 2026年安徽省合肥市高三二模英语试题(含答案和音频)
- 2026年传播与策划考试试题及答案答案
- 2026年贵州省毕节市初二地理生物会考真题试卷+解析及答案
- 小学劝返复学工作制度
- 2026年部编版五年级语文下册金句仿写
- 神经外科中枢神经系统感染诊治中国专家共识(2021 版)
- 2025陕煤电力略阳有限公司高校毕业生招聘10人笔试历年典型考点题库附带答案详解
- 藏医外冶室工作制度
- 2026年宗教教职人员管理知识试题
评论
0/150
提交评论