




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
桂林电子科技大学FPGA报告减法器学院(系): 电子信息工程系 专 业: 电子信息工程技术 学 号: 学生姓名: 指导教师: 桂林电子科技大学职业技术学院实训报告目 录摘要21 绪论 42 课题背景42.1设计任务与要求42.2设计目的43总体设计方案及硬件介绍43.1 XC3S200AN_FT256N主要功能43.2 方案论证63.2 设计思想63.4 电路框架图63.5 程序流程图74 调试心得85 实训经过86 结论87 个人想法9致谢10参考文献11附件12摘 要随着基于FPGA技术的发展和应用领域的扩大与深入,FPGA技术在电子信息、通信、自动控制用计算机等领域的重要性日益突出。作为一名电子信息专业的学生,我们必须不断地了解更多的新产品信息,这就更加要求我们对FPGA有个全面的认识。 本次设计的是基于Verilog HDL的矩阵键盘扫描通过数码管显示键值,并且能够实现减法器的基本功能。采用Xilinx ISE 11作为开发工具,Verilog HDL语言作为硬件描述语言,所开发的程序经过调试运行,初步实现了设计目标。关键词 :FPGA;减法器;AbstractWith FPGA-based development and application of technology to expand the field and in-depth, FPGA technology in the electronic information, communications, automatic control with computer and other areas of growing importance. As a student of Electronic Information, we must continue to understand more new product information, which further requires us to have a comprehensive understanding of FPGA.The design is based on Verilog HDL matrix keyboard scan through the digital pipe display key value, and can realize minus the basic function of skulls. The ISE and Xilinx as development tools, Verilog HDL language as a hardware description language, the development of the program after test and operation, and then realized the design goal. Key words: FPGA; Skulls reduction;1 绪论随着大规模集成电路技术和EDA技术的迅速发展,使得数字系统的硬件设计如同软件设计那样方便快捷,而Verilog HDL 是当前应用最广泛的并成为IEEE标准的一种硬件描述语言。Verilog HDL是在C语言的基础上演化而来,具有结构清晰、文法简明、功能强大、高速模拟和多库支持等优点。 减法器是一种非常方便的算数工具,它大大的提高了运算效率,使得计算减法的时候能够快速准确的得到答案。2 课题背景在高新技术日新月异的今天,科学技术已经成为整个社会发展的源动力,电子领域的发展更是令人目不暇接,在其推动下,现代电子产品几乎渗透了社会的各个领域,遍迹了千家万户,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。2.1设计任务与要求本设计主要能够通过4位共阴数码管显示矩阵键盘扫描返回的键值,然后通过程序构成减法器。通过这个基础能够发展成为一个完整的计算器。 2.2设计目的通过该设计对FPGA系统及Verilog HDL语言要有一个全面的了解、掌握HDL语言的使用方法、掌握简FPGA应用系统软硬件的设计方法,进一步锻炼在FPGA应用方面的实际动手能力。 3总体设计方案及硬件介绍3.1 XC3S200AN_FT256N主要功能 XC3S200AN_FT256N 板包含了以下主要组件: 20 万逻辑闸的Xilinx Spartan-3AN XC3S200AN FPGA 包装为FT256只脚位 (XC3S200AN-4-FT256-C). 内含16 个 18K-bit 的Block RAMs (共216K bits). 内含16 个 18x18 硬件乘法器. 内含4 个 Digital Clock Managers (DCMs). 内含195 个 可用脚位 RS-232 界面x2 PROM XCF02S-VO20 40MHz 的振荡晶体. 一个使用者振荡晶体的Socket (Half Size) 50 点 User IO,可连接使用者设计的板子. 4 个DIP switch 16 个LED 输出界面 8 个 按键输入 8x8 矩阵式LED 7x4 七节灯管 16x2 液晶显示器 4x3 按键输入 PS2 输入接口 VGA 输出接口(8 色). 128kx8bits 静态内存(Static Random Access Memory) 单一电源输入( +5V/ 3A ). 提供板子上两组电源使用 ( 1.2 V , 3.3 V )3.2 方案论证硬件设计中做出减法器的时候有两种方案可供选择:方案一: 使用独立按键,一个按键占用单独的一个I/O口,连接比较简单,程序的写法比较简单容易实现。但是比较浪费I/O口,而且键位和现代计算器不一样,比较难以运用。方案二: 使用矩阵键盘,节省I/O口,通常将按键排列成矩阵形式,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。键位和现代计算器大致相同。 经过比较,方案二更符合本次实训所做减法器的要求,因此采用方案二。3.3 设计思路通过XS3S200AN_FT256 展示板上的扫描式键盘的架构图得知矩阵键盘一共为7位的IO端(PIN1),把PIN1分为4个input和3个output或是3个input和4个output皆可.当一边输入端其中一只脚位输入为低电位0时,另一端输出端侦测到其中一只脚位为低电位0,表示相对应之按键被按下.如按键1按下时,得到”0111011”,利用此关系建出键盘译码表出来.就可以将数据显示到七段数码管上。然后通过程序中的运算过程达到减法的效果。输入数值为被减数,按下按键*则为减法效果,再次输入数值即为减数,然后得到结果。3.4 电路框架图数码管矩阵键盘FPGA3.5 程序流程矩阵键盘的程序流程输入第二个数否(等待)判断是否按下等号开始是(继续)输入数是(继续)判断是否按下减号否(等待)输出结果减法器的程序流程4 调试心得在这次实训中,我用的是矩阵键盘来作为输入。矩阵键盘的输入并不是特别的困难,主要注意的是管脚的配置还有程序中对于矩阵键盘函数的放置位置。虽然自己对于FPGA的操作已经比较熟练了,但是还是不能做得太快,因为End的输入不能多不能少,多或者少都会影响程序的正常工作。在编写程序的时候,要尽量的注意自己的格式,一个好的格式能够很好的帮助自己编写出更好的程序,而且格式好也能够方便自己的检查和修改,提高自己的编程效率。5 实训经过 在这次实训中,我选择的是用FPGA做减法器。实训中遇到了很多的问题,做减法器首先是矩阵键盘模块,这个模块做的不能说是顺利,但是也没有遇到太大的问题,主要的问题是管脚的绑定,和同学一起就能够解决了。 其次是运算模块,运算是要求1-200之间的输入的运算,这个就比较困难了。因为输入一个数比较好弄,但是需要输入大于九的两位数甚至三位数就没有弄懂,因为需要第一个数的移动,第二个数的补充。而且这里还涉及了正负号的说法,让减法器更加的困难对于我来说。所以我至今还是没有能够做出来这个减法器。 第三就是显示模块,这个没有什么难度,只是要用数码管显示出正号,这个我还没有想通是如何做的。6 结论 在这次实训中,总的来说是不成功的。当时选择题目的时候我个人认为减法器这个题目还是比较简单的。但是经过多次的调试,反复的修改,还是一点都不得入门。所以,这次实训我的不到太多的结果,但是过程还是相当有意义的。因为在做此次实训时,对FPGA也有了更深入的了解。减法器虽然没有做出来,但是我做出了矩阵键盘的程序,这是减法器的一半,但是却不是减法器的核心。减法器的核心我认为就是那一个负号。其次就是数字的位移,输入第一个数,当再输入第二个数的时候,第一个数需要往右边移动一位显示,原来第一个数的位子由输入的第二个数字代替。所以本次实训不能算是失败,但是也不能算是成功。7 个人想法 经过了这次实训,我觉得我的FPGA还是没有达到入门的级别,只能说我略懂皮毛,一个简简单单的减法器我却没有能够完成,这个我自己还是相当失望的。就这次我错的程序来看,我有一些自己的心得和自己的想法,只是自己不能够实现,所以说出来让各位品鉴一下,看我的想法是否靠谱。 虽然没有做出减法器,但是在做程序时,有以下几点我这样想了,但是没有完成的: 1.在输入多位数的时候,用流水灯的方法,将第一个数左移至第二位,然后第二个数字补充至第一个数原来占据的位置,当然输入三位数的时候也是一样的。这个想法我没有能够实现,只是说出来希望老师能够解答。 2.也就是当答案是负数的时候,我是没有办法让他显示负号的,但是我是这样想的。输入的两个数分别为A、B的时候,A是被减数,B是减数。若A大于B,则为A减B得到答案,答案为正。若A小于B,则B减A得到答案,这个答案依然是正的,但是A小于B时,答案前面加上一杠,视为减号!这样应该能够在FPGA没有负数的情况下显示负数。 不知道以上的两个方法能不能行得通, 致 谢感谢老师为我们争取的这次实训机会,让我们有了锻炼自己和提高自己的机会。熊老师对我的帮助也是很大的,平时的学习,还有这次实训老师的帮助。我很感谢熊老师给我的这个机会让我们完成这次实训,虽然实训没有很成功的完成,但是从中也学习到了很多。老师还尽心尽力的辅导我们如何写论文,这次的实训和论文都是在熊老师的指导下完成的。2011年 6月 16 日 参考文献1叶俊明,熊彬.FPGA实验指导书.2夏宇闻.数字系统设计.北京航空航天大学出版社.2008.63王金明.数字系统设计与verilog HDL.北京电子工业出版社.20084王金明,冷自.EDA技术与Verilog设计.北京科技出版社.2008附件实训程序:timescale 1ns / 1psmodule key(dataout,en,clk,reset,row,col,key_value); input clk,reset; input 3:0 row; /行 output 2:0 col; /列 output 3:0 key_value; output reg 6:0dataout;/数码管显示数据 output reg 3:0en; /数码管显示使能 reg 3:0 col; reg 3:0 key_value; /键值 reg 5:0 count; reg 2:0 state; reg key_flag; /按键标志位 reg clk_500khz; reg 2:0 col_reg; /寄存扫描的列值 reg 3:0 row_reg; /寄存扫描的行值 always (posedge clk or negedge reset) if(!reset) begin clk_500khz=0; count=50) begin clk_500khz=clk_500khz;count=0;end else count=count+1; end always (posedge clk_500khz or negedge reset)/扫描模块 if(!reset) begin col=3b000;state=0;end else begin case (state) 0:begin col2:0=3b000; key_flag=1b0; if(row3:0!=4b1111) begin state=1;col2:0=3b011;end else state=0; end 1:begin if(row3:0!=4b1111) begin state=5;end /判断是否是第一行 else begin state=2;col2:0=3b101;end /扫描第二行 end 2:begin if(row3:0!=4b1111) begin state=5;end /判断是否是第二行 else begin state=3;col2:0=3b110;end /扫描第三行 end 3:begin if(row3:0!=4b1111) begin state=5;end /判断是否是第三行 else begin state=4;end /扫描第四行 end 4:begin if(row3:0!=4b1111) begin state=5;end /判断是否是第一行 else state=0; end 5:begin if(row3:0!=4b1111) begin col_reg=col; /保存扫描列值 row_reg=row; /保存扫描行值 state=5; key_flag=1b1; /有键按下的标志位 end else begin state=0;end end endcase end always (clk_500khz or col_reg or row_reg) begin if(key_flag=1b1) begincase (row_reg,col_reg) 7b1110_011:key_value=1; 7b1110_101:key_value=2; 7b1110_110:key_value=3; 7b1101_011:key_value=4; 7b1101_101:key_value=5; 7b1101_110:key_value=6; 7b1011_011:key_value=7; 7b1011_101:key_value=8; 7b1011_110:key_value=9; 7b0111_101:key_value=0; 7b0111_011:key_value=10; 7b0111_110:key_value=11; endcase end end always (key_value) /显示模块 begin case(key_value) 0:begin dataout=7b1000000;en=4b0111;end 1:begin dataout=7b1111001;en=4b0111;end 2:begin dataout=7b0100100;en=4b0111;end 3:begin dataout=7b0110000;en=4b0111;end 4:begin dataout=7b0011001;en=4b0111;end
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025冕宁县人民医院考核招聘编制外康复技师6人考前自测高频考点模拟试题及1套完整答案详解
- 2025年芜湖经济技术开发区(芜湖一中教育集团)招聘中学教师55人考前自测高频考点模拟试题及答案详解(典优)
- 2025江苏盐城市滨海县卫生事业单位校园招聘专业技术人员22人模拟试卷及完整答案详解
- 2025年河北秦皇岛城市发展投资控股集团有限公司公开选聘子公司职业经理1名模拟试卷及参考答案详解一套
- 2025年中国光大银行社会招聘模拟试卷及答案详解一套
- 2025年荆州市广电影视文化有限公司招聘和入围考前自测高频考点模拟试题附答案详解(突破训练)
- 2025福建福州市招聘培训顾问1人考前自测高频考点模拟试题及答案详解(名校卷)
- 2025广西壮族自治区卫生健康委员会机关服务中心招聘编外聘用人员3人考前自测高频考点模拟试题及参考答案详解1套
- 2025杭州淳安县公开招聘中小学教师12人考前自测高频考点模拟试题附答案详解(考试直接用)
- 2025国网物资有限公司第二批高校毕业生录用人选的模拟试卷及答案详解(有一套)
- 2025贵州金控集团特需人才引进4人(第二批次)笔试历年参考题库附带答案详解
- 2026中国电建集团成都勘测设计研究院有限公司招聘笔试备考试题及答案解析
- 2025-2026学年高二物理上学期第一次月考卷(原卷及解析)【测试范围:第1~3章】(考试版A4)(广东专用)
- 2025年电工考试题库(内附答案)
- 朝鲜族朝鲜语考试题及答案
- 2025年成考专升本政治时政练习题及答案
- 人事培训专员培训课件
- 励志主题课件
- 2025年【电工证】模拟考试题及答案
- 教师竞聘报告模板
- 体育课急救知识
评论
0/150
提交评论