偶然发现了一门不错的课程,UCSD的ECE111。这门课最后开设是在2019的Winter学期,距今也没有太长时间。课程讲授的内容非常适合EE/CS专业的学生入门芯片设计。该课程主要介绍了基于SV的数字芯片设计,这门课还有几个Project作业,主要围绕Bitcoin相关展开。 这门课的课程目标是学会基于Verilog的数字芯片设计。实际上这门课...
偶然发现了一门不错的课程,UCSD的ECE111。这门课最后开设是在2019的Winter学期,距今也没有太长时间。课程讲授的内容非常适合EE/CS专业的学生入门芯片设计。该课程主要介绍了基于SV的数字芯片设计,这门课还有几个Project作业,主要围绕Bitcoin相关展开。 本人打算开个新坑,将这门课的slides进行讲解,并附上自己工作学习...
简介:快速入门数字芯片设计,UCSD ECE111(十)比特币加密(二) 结构框图如图所示,和SHA256非常类似。 然后说明了一下你的设计大概是怎么样的。 粗略估计了一下需要的时钟周期,上述是采用串行实现的。因此需要的时钟周期较长。 如果采用并行的话,可以大幅加快运算速度。因为对于不同的nonce而言,它们互相之间的运算是完...
在IDLE状态,默认所有变量都是0,当begin_fibo拉高的时候,会给R0赋值1,R1赋值0(这里隐含了一个else逻辑,因为寄存器默认输出保持不变,所以不需要写这几个逻辑变量维持不变的逻辑。但是对于初学者,我的建议是写上,不然可能过段时间你就看不懂你代码了。)然后在COMPUTE状态下,如果没有运算指定的次数,则一直算,算完...
ECE 111 Winter 2019cwcserv.ucsd.edu/~billlin/classes/ECE111/index.php 第一页slide给了一个加法器的例子。该例子加法的实现方式对于初学者来说可能难以理解,实际上这是超前进位加法器。对于单比特的加法而言,使用该加法器没有意义,但是对于较高比特的加法而言,该加法器会有明显的速度优势(如果比特数过高则...
发生了8位(即1字节)的移动。接着,我们探讨了模块的接口设计。黄色部分所示的byte_rotation模块正是我们需设计的核心组件,而内存模型则由testbench提供,该模型主要用于仿真,无需考虑实际电路细节,只需实现所需功能即可。Project部分则负责实现状态机,其默认处于IDLE状态,等待启动指令。当接收到message_addr提供的...
快速入门数字芯片设计并更深入了解SystemVerilog的要点如下:SystemVerilog的打印功能:display:用于将信息直接打印到屏幕上,便于追踪信号变化。$write:用于非换行输出,适合连续信息输出。$monitor:在信号值改变时打印,有助于定位问题。转义字符:如换行符和制表符,在特定情况下使用,理解基本概念后,可...
简介:快速入门数字芯片设计,UCSD ECE111(十一)Project的一些注意事项 这篇文章带来ECE111第十一节课的Slides以及自己的一些补充。 该课程的网站如下: https://link.zhihu.com/?target=http%3A//cwcserv.ucsd.edu/~billlin/classes/ECE111/index.php
简介:快速入门数字芯片设计,UCSD ECE111(二)SystemVerilog(下) 然后介绍了always_comb语句。该语法用于实现组合逻辑操作,代表其中间的逻辑是一段组合逻辑,如果有多条语句,需要在前后分别加上begin和end。此外这页slide还说明了一个非常重要的概念,“阻塞赋值”,也就是“=”。在组合逻辑当中,只允许使用阻塞赋值,阻塞...
这篇文章带来ECE111第四节课的Slides以及自己的一些补充。 该课程的网站如下: ECE 111 Winter 2019cwcserv.ucsd.edu/~billlin/classes/ECE111/index.php 首先回顾了一下状态机的概念。我个人理解:状态机和人的思维非常类似,同时软件的执行也可以看作一个状态机。将一个任务划分为不同的状态,定义状态之间的跳...