- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
EDA技术Verilog密码锁剖析
电 子 科 技 大 学
实 验 报 告
学生姓名:吴成峰 学 号:2014070906016 指导教师:黄志奇
一、实验室名称: 主楼C2-514
二、实验项目名称:
密码锁
三、实验原理:
利用FPGA开发班上的3个按钮开关btn[2:0]来输入4位数字的密码。例如,输入“2-0-1-2”打开门锁。将用拨位开关sw[7:0]来设置密码,通过按钮开关btn[2:0]来输入密码。其中,btn[0]、btn[1]和btn[2]分别对应的有效输入为“00”(十进制0)、“01”(十进制1)和“10”(十进制2),sw[7:6]、sw[5:4]、sw[3:2]和sw[1:0] 分别对应密码的’b00,sw[7:6], 2’b00,sw[5:4], 2’b00,sw[3:2], 2’b00,sw[1:0]}
输入4位数字后,才能知道所输入的密码是否正确。如果密码是正确的,led[1]亮起;如果密码错误,led[0]将亮起。
图1给出了设计的顶层模块。当按下btn[0]、btn[1]、btn[2]中任何一个按钮时,将会产生一个时钟脉冲。当分别按下按钮btn[0]、btn[1]、btn[2]时,锁模块对应的2位输入bn[1:0]为“00”、“01”和“10”。输入的密码与拨位开关上设置的密码相比较,产生图2所示的状态转移图。注意:即使密码输入错误,也必须完成完整的4位密码输入,才能进入“fail”状态E4。
图1. 门锁电路的顶层模块
图2. 门锁电路的状态转移图
四、实验目的:
熟悉利用HDL代码输入方式进行组合逻辑电路的设计和仿真的流程,掌握Verilog语言的基本语法。并通过一个密码锁的设计把握利用EDA软件(Xilinx ISE 10.1)进行HDL代码输入方式的电子线路设计与仿真的详细流程,熟悉摩尔状态机。
五、实验内容:
利用HDL代码输入方式在Xilinx ISE 10.1平台上实现一个密码锁设计,可以设定密码并显示,输入密码以解锁;
设计密码锁的顶层模块,使用模块实例语句连接前面所设计的密码锁模块;
生成比特流文件下载到开发板上进行验证。
六、实验器材(设备、元器件):
计算机(安装Xilinx ISE 10.1软件平台);
BASYS2 FPGA开发板一套(带USB-MIniUSB下载线)。
七、实验步骤:
1、在Xilinx ISE 10.1平台中,新建一个工程lock。我们选用的BASYS2 FPGA开发板采用的是Spartan3E XA3S100E芯片和CPG132封装,设置好器件属性,如图3所示。
图3. 设置器件属性
2、在工程管理区任意位置单击鼠标右键,在弹出的快捷菜单中选择“New Source”命令,弹出新建源代码对话框,这里我们选择“Verilog Module”类型,输入Verilog文件名“lock”。
ISE会自动创建一个Verilog的模板,并在源代码编辑区打开,接下来的工作就是将代码编写完整。完整代码如下:
module lock(
input clk,
input clr,
input [7:0] sw,
input [1:0] bn,
output reg pass,
output reg fail
);
reg [3:0] pre_s,nex_s;
parameter S0=4b0000,S1=4b0001,S2=4b0010,S3=4b0011,S4=4b0100,
E1=4b0101,E2=4b0110,E3=4b0111,E4=4b1000;
//state registers
always@(posedge clk or posedge clr)
begin
if(clr==1)
pre_s=S0;
else
pre_s=nex_s;
end
//C1
always@(*)
begin
case(pre_s)
S0:if(bn==sw[7:6])
nex_s=S1;
else
nex_s=E1;
S1:if(bn==sw[5:4])
nex_s=S2;
else
nex_s=E2;
S2:if(bn==sw[3:2])
nex_s=S3;
else
nex_s=E3;
S3:if(bn==sw[1:0])
nex_s=S4;
else
nex_s=E4;
S4:if(bn==sw[7:6])
nex_s=S1;
您可能关注的文档
- DW3015光纤技术方案-500W.doc
- DTZ188DSZ188三相电子式智能电表说明书.doc
- 第1章运动的描述(2课时).ppt
- 第1章计算机基础知识(实验课,16.9.18修改,可提供).ppt
- DW网页设计—第1章了解网页.ppt
- DW网页设计—第8章表格.ppt
- DW网页设计教学—单元3创建超级链接与导航栏.ppt
- DW网页设计—第9章创建框架结构的页面.ppt
- 第1章边坡工程基础知识.ppt
- DW网页设计教学—单元7实现网页特效.ppt
- 分析let s单元56ago2卷纸zheng unit56.pdf
- 塑胶材料其它分类原料pa9t 12.pdf
- md16x16数字媒体切换器设备.pdf
- 者参考项目发起人学科类型单位序列承包商修订页代码顺序典型.pdf
- 届世界天然气大会阿姆斯特丹2006add10288.pdf
- 期测试记录表每周weekly g1g6 journeys tests level 6 lesson26.pdf
- modernize-whitepaper现代化您应用程序白皮书.pdf
- anybackup产品典型案例分析.pdf
- 约克金融工程课程tfeslide32.pdf
- 广州市妇女儿童医疗中心历份教学药历01tjy.pdf
文档评论(0)