快速入门数字芯片设计,UCSD ECE111(五)Project1&2(一)

简介: 快速入门数字芯片设计,UCSD ECE111(五)Project1&2

这篇文章带来ECE111第五节课的Slides以及自己的一些补充。

该课程的网站如下:


本节课带来两个Project,其中第一个Project为上节课末尾介绍的:采用两个状态或者不用状态机实现斐波那契数列。

首先回顾了一下三个状态实现斐波那契序列,这里不再重复介绍。

然后讲解了两个状态机实现斐波那契数列,这个和我上一篇介绍的文章差不多,即去掉DONE这个冗余状态。然后将done和fibo_out两个信号由触发器变量直接驱动,而不是写在状态机中。实际上写在状态机里面也可以,这个其实是个人习惯问题。

然后介绍了不采用状态机如何实现斐波那契数列。实际上就是if/else分支语句,可以看到,根据判断count的值,会反复的执行斐波那契数列运算。实际上这种带反馈的if/else,综合成电路就是状态机!有没有状态机关键就是看有没有“寄存+反馈”。有兴趣的朋友可以自己综合一下,生成的电路应该是基本一致的,即D触发器的输出会反过来驱动前级的逻辑。

然后介绍了一下如何用纯组合逻辑实现斐波那契数列。说实话,我看到这段代码也惊到了,居然还能这么写?实际上这就是个查找表,把斐波那契的前32项事先运算好,然后多选一即可。优点在于..emmm,没有优点。缺点就是灵活性太低,并且消耗面积很大。使用了二维数组(这段代码表现成电路是很多很多的线)。

然后回顾了一下阻塞赋值和非阻塞复制。always_ff 代表flip_flop。即用来产生触发器,对应时序逻辑。内部采用非阻塞赋值,也就是begin到end内部的逻辑块,认为是同步发生的。例如q<=q+1。右边的q+1是触发器现在的值,意味着在下一个时钟边沿将右边的值寄存到左边。两个q含义不同,大家可以画个电路图理解一下,其实充分理解了D触发器的D端和Q端就明白了。

对于阻塞赋值。always_comb代表combination。即组合逻辑,其内部应该使用阻塞赋值"="。内部的逻辑前后是有先后顺序的。在前面的文章介绍过这段代码,这里不再重复介绍了。什么时候用阻塞赋值,什么时候用非阻塞赋值。遵循上面的规定就可以了,这是Verilog/SV的设计之初就规定好了。因为Verilog/SV仿真和综合是有个序列的,采用该赋值方式符合数字电路的特点。大家一定要遵循该规定。

然后介绍了Function函数功能。一般用来封装一个组合逻辑功能,还是挺好用的。大家仔细看,是不是跟module endmodule写法很类似呢?其实就是差不多,不过没有output定义,也不能有时序信息。更多的用法可以在网上搜索更多function相关的文章,这里不再介绍了。

然后回顾了一下这段代码,之前介绍过,就不再重复了。


然后介绍了第二个Project:字节旋转

该Project的目标是明白在剩余的Project中需要使用的内存模型。实际上存储在数字电路中非常重要的,所以大家应该认真学习该Project。

目录
相关文章
|
C语言 芯片 SoC
快速入门数字芯片设计,UCSD ECE111(一)Introduction(下)
快速入门数字芯片设计,UCSD ECE111(一)Introduction(下)
117 1
|
存储 安全 编译器
快速入门数字芯片设计,UCSD ECE111(五)Project1&2(二)
快速入门数字芯片设计,UCSD ECE111(五)Project1&2(二)
76 0
|
编译器 芯片
快速入门数字芯片设计,UCSD ECE111(二)SystemVerilog(下)
快速入门数字芯片设计,UCSD ECE111(二)SystemVerilog(下)
96 0
|
芯片
快速入门数字芯片设计,UCSD ECE111(八)更深入了解SystemVerilog(二)
快速入门数字芯片设计,UCSD ECE111(八)更深入了解SystemVerilog(二)
85 0
|
算法 编译器 C语言
快速入门数字芯片设计,UCSD ECE111(八)更深入了解SystemVerilog(一)
快速入门数字芯片设计,UCSD ECE111(八)更深入了解SystemVerilog
103 0
|
算法 芯片
快速入门数字芯片设计,UCSD ECE111(十二)Testbench和VHDL(一)
快速入门数字芯片设计,UCSD ECE111(十二)Testbench和VHDL
112 0
|
算法 芯片
快速入门数字芯片设计,UCSD ECE111(十二)Testbench和VHDL(三)
快速入门数字芯片设计,UCSD ECE111(十二)Testbench和VHDL(三)
87 0
|
存储 芯片
快速入门数字芯片设计,UCSD ECE111(三)System Verilog时序逻辑(下)
快速入门数字芯片设计,UCSD ECE111(三)System Verilog时序逻辑(下)
92 0
|
存储 芯片 异构计算
快速入门数字芯片设计,UCSD ECE111(三)System Verilog时序逻辑(上)
快速入门数字芯片设计,UCSD ECE111(三)System Verilog时序逻辑
98 0
|
机器学习/深度学习 调度 芯片
快速入门数字芯片设计,UCSD ECE111(九)FPGA vs ASIC(一)
快速入门数字芯片设计,UCSD ECE111(九)FPGA vs ASIC
95 0