通过Verilog实现交通灯设计实验报告.doc

举报
资源描述
.* 电 子 科 技 大 学 实 验 报 告 一、实验室名称:虚拟仪器实验室 二、实验项目名称:交通灯设计实验 三、实验学时:4学时 四、实验原理 假设交通灯处于南北和东西两条大街的“十”字路口,如图1所示。用FPGA开发板的LED灯来模拟红、黄、绿3种颜色信号,并按一定顺序、时延来点亮LED,如图2所示。图3给出了交通灯的状态转移图。设计使用频率为1Hz的时钟来驱动电路(注1:仿真时采用1MHz的时钟来驱动电路),则停留1个时钟可得到1S的延时,类似停留3个时钟可得到3S的延时,停留15个时钟可得到15S的延时(注2:开发板工作时钟为50MHz)。 图1. 六个彩色LED可以表示一组交通信号灯 状态机的状态 南北大街 东西大街 开发板延时(单位:s) 仿真延时(单位:us) S0 红 绿 15 15 S1 红 黄 3 3 S2 红 红 3 3 S3 绿 红 15 15 S4 黄 红 3 3 S5 红 红 3 3 图2. 交通灯状态 南北 东西 红 黄 绿 红 黄 绿 S0 1 0 0 0 0 1 S1 1 0 0 0 1 0 S2 1 0 0 1 0 0 S3 0 0 1 1 0 0 S4 0 1 0 1 0 0 S5 1 0 0 1 0 0 图3. 交通灯的状态转移图 图4. 交通灯的原理框图 五、实验目的 本实验是有限状态机的典型综合实验,掌握如何使用状态转移图来定义Mealy状态机和Moore状态机,熟悉利用HDL代码输入方式进行电路的设计和仿真的流程,掌握Verilog语言的基本语法。并通过一个交通灯的设计掌握利用EDA软件(Xilinx ISE 13.2)进行HDL代码输入方式的电子线路设计与仿真的详细流程。。 六、实验内容 在Xilinx ISE 13.2上完成交通灯设计,输入设计文件,生成二进制码流文件下载到FPGA开发板上进行验证。 七、实验器材(设备、元器件) 1、计算机(安装Xilinx ISE 13.2软件平台); 2、BASYS2 FPGA开发板一套(带USB-MIniUSB下载线) 八、实验步骤 (1) 新建工程,设置器件属性:在Xilinx ISE 13.2平台中,新建一个工程(注意命名规范),输入工程名称以及工程所在的目录,设置芯片的具体型号(Spartan 3E XC3S100E)、封装类型(CP132)以及编码使用的语言(Verilog)。(详见实验指导书) (2) Verilog源码文件创建与编辑:选中器件名字,点击鼠标右键,选中New Source…,选择Verilog Module以及输入文件名称(详见实验指导书) (3) 语法检查,对设计文件进行综合:代码编写完成后,在ISE的主界面的处理子窗口的synthesis的工具检查代码语法(Check Syntax),同时在此窗口可以查看RTL原理图(View RTL schematic)、查看技术原理图(View Technology Schematic)以及产生综合后仿真模型(Generate Post-Synthesis Simulation Model)。 (4) 对设计进行行为仿真:1)产生测试文件模板;2)完成测试脚本创建与编辑;3)调出仿真窗口对设计进行仿真;4)通过波形查看仿真结果。(详见实验指导书) (5) 添加实现约束文件。(详见实验指导书) (6) UCF文件导入。(详见实验指导书) (7) FPGA在线下载配置:1)连接开发板并给开发板供电;2)边界扫描,初始化链;3)下载比特流文件;4)对FPGA进行编程;5)生成PROM文件;6)将生成的PROM文件烧到PROM芯片中。(详见实验指导书) (8) 关闭配置界面,不保存任何信息。(一定不要保存任何信息) (9) 关闭电源重新上电,程序从PROM自动引导到FPGA芯片中。 (10) 给开发板断电,清理器件,实验结束。 九、实验数据及结果分析 9.1状态机转移代码 module traffic(input clk, input rst, output reg[5:0] lights ); reg[2:0] state; reg[3:0] count; parameter S0=3b000,S1=3b001,S2=3b010, S3=3b011,S4=3b100,S5=3b101; always@(posedge clk or posedge rst)begin if(rst)begin state<=S0; count<=0; end else begin case(state) S0:if(count<15)begin state<=S0; count<=count+1; end else begin state<=S1; count<=0; end S1:if(count<3)begin state<=S1; count<=count+1; end else begin state<=S2; count<=0; end S2:if(count<3)begin state<=S2; count<=count+1; end else begin state<=S3; count<=0; end S3:if(count<15)begin state<=S3; count<=count+1; end else begin state<=S4; count<=0; end S4:if(count<3)begin state<=S4; count<=count+1; end else begin state<=S5; count<=0; end S5:if(count<3)begin state<=S5; count<=count+1; end else begin state<=S0; count<=0; end default state<=S0; endcase end end always@(*)begin case(state) S0:lights=6b100_001; S1:lights=6b100_010; S2:lights=6b100_100; S3:lights=6b001_100; S4:lights=6b010_100; S5:lights=6b100_100; default lights=6b100_001; endcase end Endmodule 9.2 时钟分频代码 module clk_div(input clk, input rst, output reg clk_1hz ); parameter CNT_WIDTH=5; reg[CNT_WIDTH-1:0] cnt; always@(posedge clk or posedge rst) begin if(rst)begin cnt<=0; end else begin cnt<=cnt+1; end end always@(posedge clk or posedge rst) if(rst) clk_1hz<=0; else if(cnt==25)begin clk_1hz<=~clk_1hz; cnt<=0; end Endmodule 9.3 顶层代码 module top(input mclk, input wire[3:3] btn, output wire[7:2] Led ); wire clk_1hz; wire rst; assign rst=btn[3]; clk_div clk_div_inst( .clk(mclk), .rst(rst), .clk_1hz(clk_1hz) ); traffic traffic_inst( .clk(clk_1hz), .rst(rst), .lights(Led) ); endmodule 9.4 测试代码 module text; // Inputs reg mclk; reg [3:3] btn; // Outputs wire [7:2] Led; // Instantiate the Unit Under Test (UUT) top uut ( .mclk(mclk), .btn(btn), .Led(Led) ); initial begin // Initialize Inputs mclk = 0; btn = 1; // Wait 100 ns for global reset to finish #100; btn = 0; // Add stimulus here end parameter PERIOD =20; always begin #(PERIOD/2) mclk =0; #(PERIOD/2) mclk =1; end Endmodule 9.5 仿真波形代码(对波形进行相关的文字说明,所截取的波形要覆盖所有状态转移) 由图中可以看出,lights显示100001(S0),经过15us后变为100010(S1),接着3us变为100100(S2),再3us变为001100(S3),然后15us变为010100(S4),之后3us变为100100(S5),状态正确。 由图可以看出,clk_1hz周期为1000ns,满足1M hz的要求 10、 实验结论 通过实验,实现了用Xilinx ISE 13.2实现了一个交通灯的电子线路设计与仿真,更加熟练掌握Verilog语言的基本语法。 十一、实验中遇到的问题及相应的解决办法 (1) lights状态不发生变化 答:在test文件中,令btn初值为1 报告评分: 指导教师签字:
展开阅读全文
相关搜索
温馨提示:
taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

当前位置:首页 > 技术资料 > 施工组织


本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁