我的小小实习
2017年6月20日 星期二实习地点:北京至芯开源科技有限责任公司
实习内容:基础语法以及软件的基础操作
一.FPGA发展的回顾
雷斌老师帮助我们把昨天学习的知识重新回顾一下。
1.就业环境:
2017年全国高校毕业生总数超过765万;2016年就业大学生平均月薪2687元;FPGA/IC设计行业至少有20~30万的人才缺口;FPGA相关行业的工程师指导薪金4000-30000元。
2.FPGA的经典应用:
奥运会画卷。无人机。机器人市场,拥有现场可重构功能的FPGA是个下风口。iPhone7中植入了FPGA。IBM服务器--插入FPGA性能提高30倍。
3.选择方向比方向更重要。简单给我们了解了一下FPGA行业方面的薪金。为了梦想奋斗!
二.Verilog的语法(与门,三态门)
李老师简单给我们讲Verilog HDL语言的基语法,演示一下一个与门电路的建模与仿真,包括前仿和后仿,并结合DE2开发板进行了板演示。
三步:建模,写代码,写仿真,
在设计当中,应该在英文状态下输入,否则将会出现语法错误。Verilog HDL是区别大小写。模块必须以关键字module开始,以关键字endmodule结束。
例:module<模块名>(<端口名称,….端口名称>);
<端口方向><端口类型><端口位宽><端口名称>;
…….
……..
endmodule
端口方向:input,output,inout(双向端口)
端口类型:wire(可省略),reg。一般情况下用wire,表示短接线,特殊声明用reg,可能是寄存器,也可能是锁存器。
端口位宽:(定义一个位宽为X的总线)
中间寄存器或中间连线,定义方法如下:
wire<名称>;
reg<名称>
Verilog建模的方法,有三种建模方法
1.数据流建模。
2.行为建模。
3.结构化建模。
其中,数据流建模,是指在模块中对信号资源(或组合逻辑的连接)的描述。行为建模,是指在模块中对信号的行为进行的描述。
1.结构化建模
变量有两种类型 wire和reg。nonblocking和blocking;testbench。FPGA上电时从flash里读取数据FPGA和CPLD的区别(集成度等)。
2.数据流建模
使用assign 语句进行赋值,例如:
assign outdata = indata1 + indata2;
上述赋值执行的方式:当等号右端的数据发生变化时,右端的表达式就会被重新计算,然后赋给等号左侧的变量。
3.行为建模
行为建模使用always进行建模,(1)always语句是重复执行的;(2)括号里的内容为敏感变量,当敏感变量有变化时,always语句执行一直。(3)当敏感列表里是posedge(上升沿),或者negedge(下降沿)时,用来描述时序逻辑。直接为某个电平时,用来表示组合逻辑。(4)时序逻辑用<=(非阻塞)赋值,组合逻辑用=(阻塞)赋值。(5)凡是在always模块当中被赋值了,都应该定义成reg的形式。
三.编程
听完李老师给我们讲解完了理论知识,大家跟着李老师进行了编程,写代码,调试,进行硬件仿真。下午我们做了两个例子,第一个为二选一寄存器,第二个为流水灯。流水灯比较复杂,耗时较多,期间遇到不少问题,老师都及时给我们解决,一直到晚自习,我们都在学习流水灯的操作。
Testbench是将我们编制的语言描述的电路模型,置入一个抽象的平台,对它的输入加以激励,信号的激励用抽象的方式来生成,观察它的输出和内部信号。
Testbench便于重复地进行观测,比原始的验证要具有更好的可维护性。
Testbench本质上仍旧是一段HDL建模代码,它本身并不能运行。运行它的方式呢,需要把它转变为目标机器上可执行的代码,这个过程称为仿真。
前仿验证的是功能,加载的模型是RTL,后仿验证的是时序,验证的模型是gate-level的模型。
页:
[1]