快速入门数字芯片设计,UCSD ECE111(二)SystemVerilog(下)

简介: 快速入门数字芯片设计,UCSD ECE111(二)SystemVerilog(下)

然后介绍了always_comb语句。该语法用于实现组合逻辑操作,代表其中间的逻辑是一段组合逻辑,如果有多条语句,需要在前后分别加上begin和end。此外这页slide还说明了一个非常重要的概念,“阻塞赋值”,也就是“=”。在组合逻辑当中,只允许使用阻塞赋值,阻塞赋值语句在赋值以后,才允许执行下面一条语句。因此表达式的先后顺序是非常重要的。通过电路图可以看出,t由a和b相与以后,和c相或得到了f。这是有先后顺序的,这里有点类似于软件思维。

然后又花了一页slide介绍always_comb语法。通过这段逻辑实现了二选一的mux。有没有发现,跟之前的三目运算符非常类似?实际上assign和always_comb都是用来实现组合逻辑的。assign一般用于实现较为简单的组合逻辑,而always_comb用于实现相对复杂的组合逻辑,如一堆if/else等。上图的mux逻辑足够简单,一句assign y=s?d1:d0;实际上就实现了,当然具体使用哪种,取决于个人习惯。

接下来讲了一下for操作,硬件设计中的for操作实际上是复制粘贴操作,跟你重复写几段是一样的。只不过是为了简化代码。同时for操作中的终止条件必须是确定的,如slide中的4。如果是不定的,是无法综合的,要时刻记住我们设计的是电路,不是顺序执行的软件代码,如果for循环次数不确定。综合工具又怎么知道应该综合多少份这样的电路呢?

至于这段代码实际上就是实现了四比特的加法器,读者可以自己把for展开思考一下。

上面的代码综合出来的电路如图所示,可以看到在n=4的时候,进位就已经很长了。所以行波进位加法器很慢很慢。

接下来介绍了case语句的使用说明。该语法实际上会生成一个多选一MUX,根据data的不同,确定segments的输出。case语句当中一定要写default。如果不写的话,编译器会认为你希望segments保持不变,但是这又是组合逻辑,所以会生成latch,写出latch的后果非常严重。借用之前微处理器老师的一句话,你如果写出这样的代码,离被开除也不远了。

这页slide也强调了default必须要写,否则会有很严重的后果。

然后介绍了一下casez的使用,casez常用于不关注某些比特,如上图所示的优先编码器,我们只关注a的某一位是不是1,当该位是1,低位的就不用看了。这种情况就可以使用casez语法。

然后介绍了一下嵌套的语句,编译器会从“最内部”向外编译。在该例子中,首先会为case语句生成多路复用逻辑,然后为if/else生成多路复用逻辑。然后根据for循环复制内部逻辑多次。

最后介绍了一下function语法,function实际上用的还是挺多的。用来替代常用的组合逻辑,用起来还是很爽的。

function不能带有时序信息,必须有至少一个输入,没有输出,但是有一个返回值。返回值就是function的函数名,该例子中为adder。可以看出,function实现本质上跟上面的always_comb没什么区别,但是优点在于可以复用。

这就是第二节课slide的全部内容了。大家加油,每天进步一点点。对文章有哪些意见或者想问的问题,欢迎在评论区指出。


目录
相关文章
|
域名解析 网络架构
追踪数据包路径 - tracepath
【1月更文挑战第23天】
1064 0
|
算法 计算机视觉
【MATLAB 】 VMD 信号分解+希尔伯特黄变换+边际谱算法
【MATLAB 】 VMD 信号分解+希尔伯特黄变换+边际谱算法
1330 0
|
Ubuntu 测试技术 Linux
dpdk测试环境搭建(vmware下ubuntu环境参考上文汇总流程)
dpdk测试环境搭建(vmware下ubuntu环境参考上文汇总流程)
1114 0
|
存储 缓存 网络协议
DPDK入门(环境搭建以及小demo)
DPDK入门(环境搭建以及小demo)
1782 0
|
5月前
|
缓存 Rust 前端开发
深入理解 Webpack 与 Vite 的构建差异与性能边界
本文深入对比 Webpack 与 Vite 的构建原理与性能差异。Webpack 采用“打包优先”策略,功能强大但启动慢;Vite 基于原生 ESM 实现“按需编译”,显著提升开发效率,冷启动和 HMR 速度远超 Webpack。生产环境下 Vite 凭借 esbuild 和 Rollup 生成更小体积、更快构建。二者在生态、配置、资源消耗等方面各有优劣,适用于不同场景。新项目推荐优先考虑 Vite,追求极致开发体验;大型复杂项目仍可选用 Webpack。理解其核心差异是优化构建流程的关键。
918 1
|
安全 虚拟化 异构计算
GPU安全容器面临的问题和挑战
本次分享由阿里云智能集团弹性计算高级技术专家李亮主讲,聚焦GPU安全容器面临的问题与挑战。内容分为五个部分:首先介绍GPU安全容器的背景及其优势;其次从安全、成本和性能三个维度探讨实践中遇到的问题及应对方案;最后分享GPU安全容器带状态迁移的技术路径与应用场景。在安全方面,重点解决GPU MMIO攻击问题;在成本上,优化虚拟化引入的内存开销;在性能上,提升P2P通信和GPU Direct的效率。带状态迁移则探讨了CRIU、Hibernate及VM迁移等技术的应用前景。
|
存储 人工智能 弹性计算
阿里云弹性计算_加速计算专场精华概览 | 2024云栖大会回顾
2024年9月19-21日,2024云栖大会在杭州云栖小镇举行,阿里云智能集团资深技术专家、异构计算产品技术负责人王超等多位产品、技术专家,共同带来了题为《AI Infra的前沿技术与应用实践》的专场session。本次专场重点介绍了阿里云AI Infra 产品架构与技术能力,及用户如何使用阿里云灵骏产品进行AI大模型开发、训练和应用。围绕当下大模型训练和推理的技术难点,专家们分享了如何在阿里云上实现稳定、高效、经济的大模型训练,并通过多个客户案例展示了云上大模型训练的显著优势。
106028 10
|
数据采集 自然语言处理 UED
文档智能和检索增强生成(RAG)技术
文档智能和检索增强生成(RAG)技术
|
调度 数据安全/隐私保护
用户态和内核态 中断处理机制
用户态和内核态 中断处理机制
972 0
|
云安全 安全 数据库连接
什么是 DoS 和 DDoS 攻击?
【8月更文挑战第31天】
2995 0

热门文章

最新文章