时至今日,终于将全部的计划55条MIPS指令在FPGA上全部验证完毕,通过这近一个月的不断的修改调试、修改调试,我对整个流程对MIPS有了深刻的体会和认识。借着刚刚现阶段任务的兴奋和短暂的空闲时间,将自己这段时间以来的心得体会记录下来,希望可以帮到感兴趣的同学。

 
首先我想说一下MIPS,最开始接触MIPS时,我还认为是百万指令集的缩写,百度了一下才知道是一家公司名,后来才知道这里所说的MIPS是一种体系结构。说实话,计组原学的不是很好,微机原理学的倒还行。但是对RISC的理解和认识也只是停留在考试题目上,还记得背过的题目IntelXXX系列处理器包含应用了RISC流水线及超标量技术。记不得了。
 
说句老实话,Intel的指令集我们也学过,根本记不住,指令格式很复杂。相对而言,MIPS的指令格式很清晰。当然,MIPS的寄存器很多,但是用处却很大。
 
我觉得搞硬件,尤其是数字模块,最重要的就是区分开组合逻辑和时序逻辑。使用Verilog语言,很容易区分不开组合和时序。其实,很多东西写写到了后来就熟悉了。Verilog里的很多东西都很重要。我觉得最重要的一点就是,Verilog不是程序设计语言,而是硬件描述语言。你绝对不能用程序设计的思想去考虑使用这种语言。必须要从数据通路需要器件的角度去考虑怎样利用这种语言,我觉得用“利用”很清楚地描述了Verilog的用途。它只是帮助你去描述你想要的硬件模块,它不是创造一个模块。还有,Verilog不是C。必须要脚踏实地的学习,学而不思则惘,思而不学则怠。
 
最后,我很想仔细地说一下FPGA开发。说实话,FPGA的很多东西我还没有掌握甚至是没有了解,尤其是我只是开发数字模块,关于模拟的东西真的不是很清楚,很后悔以前的模电课没有认真想,希望下阶段可以多学学。我觉得每个人刚刚接触FPGA开发一定会很头疼,真的非常头疼。工具链、原理图、UG等等,资料铺天盖地的席卷而来。我觉得最开始必须要选定好一块开发板的原理图和用户手册,详细阅读,当然这些东西一般都是英文的。还记得最开始我阅读NEXYS3手册几乎耗费了一周的每天晚上的时间,很多名词根本不了解,都需要weiki或者百科。然后是工具链,我觉得磨刀不误砍柴工吗,不要想着着急地在开发板上跑自己写的东西,先跑跑DEMO。熟悉一下工具,这很重要。所有工具的HELP是最好的工具教材,一定切记这点。我几乎阅读了所有Synplify Help中的所有内容,大部分ISE Help里的内容,还有网站上的UG。当然,此时可以了解一下FPGA的特性,什么是slice、LUT、LATCH等等。然后,我的建议是一定要看特权同学的书《深入浅出玩转FPGA》,我真不是打广告。这本书真是一本FPGA开发小白的入手神书,很多东西讲的很清楚很详细,很多小技巧。并且,此时有必要去读别人的代码,去培养自己的代码风格。无论硬件还是软件都要有好的代码风格。
 
仿真、综合、实现、时序约束、板级调试时ISE的通用流程,Quartus与之略有不同,原理很相似。最重要的两个过程我觉得是仿真和综合。仿真一定要好好做,不要怕麻烦和折腾。
 
综合是提供硬件能力的最快阶段,你必须要知道你使用了什么器件,系统给的和你设想的是否一致。综合不是一个一蹴而就的过程,是一个慢慢磨练的过程。然后,需要了解一下IPcore很多东西都需要用IPcore。这里的IP是知识产权的缩写,此时可能会读很多手册,但是这些ug是提高你对时序理解的最好助手。
 
我觉得实现和板级调试是一个重复的过程,不断的重复,发现错误修改代码。这个阶段需要读懂report,需要了解warning等等。
 
其实,只要你多读手册等东西,每个人都可以玩转FPGA。FPGA开发不是一个很难的过程,却是一个很漫长的过程。生活中的很多事情都不难,但却很漫长。坚持到最后,一定可以玩转。
最后,也是我刚刚发现的。其实碰到问题,可以直接在XILINX或Altera用户论坛发英文帖子,会有资深全世界的网友秒回你的,真心好。
 
像记住初恋般记住自己第一天的梦想!!!

【原创】MIPS·Verilog·FPGA的更多相关文章

  1. (原创)用Verilog实现一个参数化的呼吸灯(Verilog,CPLD/FPGA)

    1.Abstract     观察到一个有趣的现象,每当把Apple笔记本合上的时候,那个白色的呼吸灯就会反复地由暗渐明,然后又由明渐暗,乍一看就像Apple笔记本在打盹休息一样,十分可爱!于是突发奇 ...

  2. 【黑金原创教程】 FPGA那些事儿 SignalTap II 调试技巧

    简介工具篇系列的第三本教程,讲述各种与SignalTap II 有关的调试技巧. 目录[黑金原创教程] FPGA那些事儿<工具篇III>:File01 - 上线调试与下线调试[黑金原创教程 ...

  3. 【黑金原创教程】 FPGA那些事儿《概念篇》

    简介一本讲述非软硬片上系统的书,另外还是低级建模的使用手册. 目录[黑金原创教程] FPGA那些事儿<概念篇>:File01 - 结构的玩笑[黑金原创教程] FPGA那些事儿<概念篇 ...

  4. SPI通信实验---verilog(FPGA作为从机,使用可读可写)

    本实验讲究实用性,故设计思想为:主机先向从机发送地址,若是向从机写入数据,则向从机发送数据,若是读取从机数据,则向从机发送时钟,然后在时钟下降沿读取数据即可.cs信号上升沿作为SPI通信的结束信号.r ...

  5. (原创)Verilog三段式状态机

    下面以上图一个简单的FSM说明三段式Verilog状态机范式: `timescale 1ns / 1ps module FSM( clk,rst_n, in1,in2, out1,out2, CS,N ...

  6. 《FPGA那些事儿》原创教程总结

    经过我们黑金工程师多年的不断努力,黑金原创教程已经达到了14部,包括: 第一部:[黑金原创教程]NIOSII那些事儿 http://www.heijin.org/forum.php?mod=viewt ...

  7. intel FPGA CLKn pin 是否能直接进PLL?

    原创 by DeeZeng FPGA的时钟需要从专用的时钟管脚输入,那CLKn 作为Single-End时钟pin时是否能直接进 PLL呢? 通过查看对应FPGA型号的手册,得出以下结论 1. Cyc ...

  8. Intel FPGA 专用时钟引脚是否可以用作普通输入,输出或双向IO使用?

    原创 by DeeZeng FPGA 的 CLK pin 是否可以用作普通输入 ,输出或双向IO 使用?    这些专用Clock input pin 是否可以当作 inout用,需要看FPGA是否支 ...

  9. 【第一季】CH07_FPGA_RunLED创建VIVADO工程实验

    [第一季]CH07_FPGA_RunLED创建VIVADO工程实验 7.1 硬件图片 先来熟悉一下开发板的硬件:LED部分及按钮部分 7.2 硬件原理图 PIN脚定义(讲解以MIZ702讲解,MIZ7 ...

随机推荐

  1. Ext.Net学习笔记21:Ext.Net FormPanel 字段验证(validation)

    Ext.Net学习笔记21:Ext.Net FormPanel 字段验证(validation) 作为表单,字段验证当然是不能少的,今天我们来一起看看Ext.Net FormPanel的字段验证功能. ...

  2. OI中神奇的神器fillchar

    传说,Pascal中有一个函数——fillchar.这是高手们装*用的利器,也是大家的神器(大家好才是真的好). 神器介绍: 百度百科说:“Fillchar是Turbo/Borland Pascal的 ...

  3. Windows server2008/2012 安装oracle 11 创建实例HANG住在百分之2

    Windows server2008/2012 安装oracle 11.2.0.1的时候,可能会在创建数据库实例的时候卡在百分之2的地方. 这个时候可以 1.点击开始菜单,在“搜索程序和文件”中输入“ ...

  4. 基于bootstrap3的 表格和分页的插件

    如题 样式呢就是bootstrap3 的 功能呢就是实现表格和分页 (以上废话) 本来是自己没事儿写的一个js插件,曾经搁浅了一阵子,但最近由于公司项目的原因也需要这样的一个插件,所以就捡起来做了个可 ...

  5. Cassandra1.2文档学习(2)——节点间通信协议之gossip协议

    参考文档:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/architecture/a ...

  6. POJ1384完全背包问题

    题目大意:给你一个储蓄罐空的,和满的重量,然后给出各种硬币的价值和对应的重量,要你估计出储蓄罐里面硬币价值和最小为多少,注意要保证重量和恰好为给出满的重量解题思路:完全背包问题,只是求最小值,注意初始 ...

  7. Delphi中的GetEnumName和GetEnumValue的使用方法

    利用TypInfo单元的GetEnumName和GetEnumValue可以遍历任意枚举类型,并获取其名称和值.下面是示例Demo. uses TypInfo; ... procedure TForm ...

  8. linux磁盘设备知识

    linux分区数字编号: 1.分区数字编号1至4留给主分区或扩展分区使用,逻辑分区编号从5开始. 2.IDE硬盘设备名均以/dev/hd开头,不同硬盘编号依次是/dev/hda/./dev/hdb./ ...

  9. Python解析生成XML-ElementTree VS minidom

    OS:Windows 7 关键字:Python3.4,XML,ElementTree,minidom 本文介绍用Python解析生成以下XML: <Persons> <Person& ...

  10. hdu 4746 Mophues 莫比乌斯反演+前缀和优化

    Mophues 题意:给出n, m, p,求有多少对a, b满足gcd(a, b)的素因子个数<=p,(其中1<=a<=n, 1<=b<=m) 有Q组数据:(n, m, ...