HDLBits 系列(5)让三元条件运算符(?:)在你的设计中发挥作用
目录
抛砖引玉
举例练习
写在最后
抛砖引玉
Verilog具有三元条件运算符(?:)运用得当,可以起到简化代码的作用,使得代码的易读性提高,但是运用不当,也会背道而驰。
下面讲讲Verilog具有三元条件运算符(?:)的一些用途?
Verilog具有三元条件运算符(?:),非常类似于C:
(condition ?if_true:if_false)
可以用于根据一行上的条件(多路复用器!)选择两个值之一,而无需在组合的always块中使用if-then。
Examples:
可用于二选一:
(0 ? 3 : 5) // This is 5 because the condition is false. (sel ? b : a) // A 2-to-1 multiplexer between a and b selected by sel.可用于时序逻辑: always @(posedge clk) // A T-flip-flop.q <= toggle ? ~q : q;可用于状态机的状态转换逻辑中: always @(*) // State transition logic for a one-input FSMcase (state)A: next = w ? B : A;B: next = w ? A : B;endcase 可用于三态缓冲器: assign out = ena ? q : 1'bz; // A tri-state buffer可以构成更复杂的三选一的多路选择器: ((sel[1:0] == 2'h0) ? a : // A 3-to-1 mux(sel[1:0] == 2'h1) ? b :c )
举例练习
给你四个无符号数,找出最小值。
这个问题本来是在C语言中最简单的题目了,这里用电路的方式来设计出来,下面是具体描述:
给定四个无符号数字,找到最小值。 可以将无符号数字与标准比较运算符(a <b)进行比较。 使用条件运算符创建双向最小回路,然后组合其中的一些以创建四向最小回路。 您可能需要一些线向量来获得中间结果。
预期的解决方案长度:大约5行。
你会怎么做呢?
我们做逻辑设计的,可不能用什么软件思维去设计电路,用当年学的C语言来冒泡排序来解决这个问题,双重循环?
恐怕你是来搞笑的。
下面给出我的设计:
module top_module (input [7:0] a, b, c, d,output [7:0] min);//// assign intermediate_result1 = compare? true: false;wire [7:0] min1, min2, min3;assign min1 = (a > b)? b : a;assign min2 = (min1 > c)? c : min1;assign min3 = (min2 > d)? d : min2;assign min = min3;
endmodule
代入HDLBits来验证结果:
写在最后
在今年的秋招一开始,我就建立了一个微信群,在CSDN发布了一条博文,召集全国各地的同行朋友们共同加入,共同讨论秋招求职笔试,面试经验,目前已经有300多人加入,各位才华横溢,让我大开眼界。
到今天11月份,从西北地区最早结束到其他各地陆续结束,但是我们曾开玩笑说,本群继续召集下一届同行,作为先行者的我们也会对你们给予应有的帮助,欢迎加入,到你们晒工资的时候,会不会再次把我们倒挂呢?拭目以待。
由于人数较多,所以加我的时候务必备注:CSDN+地区或学校+职位(意向职位)+昵称。
我的微信号是:ljs521615
HDLBits 系列(5)让三元条件运算符(?:)在你的设计中发挥作用相关推荐
- HDLBits 系列(42)根据仿真波形来设计电路之时序逻辑
文章目录 前言 电路设计1 原题复现 题目解析 我的设计 电路设计2 原题复现 题目解析 我的设计 电路设计3 原题复现 题目解析 我的设计 电路设计4 原题复现 题目解析 我的设计 前言 上篇博文讨 ...
- HDLBits 系列(41)根据仿真波形来设计电路之组合逻辑
文章目录 Sim/circuit1 原题复现 我的设计 Sim/circuit2 原题复现 题目分析 我的设计 Sim/circuit3 原题复现 题目分析 我的设计 Sim/circuit4 原题复 ...
- HDLBits 系列(18) BCD码计数器的设计
目录 原题复现 审题 我的设计 原题复现 先给出原题: Build a 4-digit BCD (binary-coded decimal) counter. Each decimal digit i ...
- HDLBits 系列(0)专题目录
本篇博文是近来总结HDLBits系列的目录,点击蓝色字体即可进入查看具体内容. HDLBits 系列(1)从HDLBits中获取灵感,整顿自己,稳步前行 HDLBits 系列(2)如何避免生成锁存器? ...
- Python是否具有三元条件运算符?
如果Python没有三元条件运算符,是否可以使用其他语言构造来模拟一个? #1楼 对于Python 2.5及更高版本,有一种特定的语法: [on_true] if [cond] else [on_fa ...
- HDLBits 系列(31)Serial Receiver and Datapath
目录 序言 原题复现 我的设计 序言 上篇博文: HDLBits 系列(30)Serial Receiver 写了串行接收器如何接收8位串行数据,正确接收8位串行数据后给一个接收完毕标志信号,这篇博文 ...
- HDLBits 系列(29)PS/2 mouse protocol(PS/2 packet parser and datapath)
目录 序言 原题传送 题目解释 我的设计 序言 上篇博客: HDLBits 系列(28)PS/2 mouse protocol(PS/2 packet parser) 只对PS/2 mouse pro ...
- HDLBits 系列(1)从HDLBits中获取灵感,整顿自己,稳步前行
目录 前言 对HDLBits的夸赞 最后想说的话 前言 坚持一件事情很难系列,有些事情看似简单,但是坚持做下去确实会有所收获,举个不恰当的例子,总搞一些自己觉得难的东西,会让自己的博客断更,困难的东西 ...
- HDLBits 系列(38)值得一看的状态机设计题目
目录 背景 原题复现 我的方案 状态转移图 我的设计 更新方案 FPGA/IC群推荐 背景 这是这个系列中的一个状态机的题目,但是相比于给了你完整状态转移图之类的题目,这个题目还是稍微有点难的,我实在 ...
最新文章
- CSS实现各类分栏布局
- 信息系统项目管理师考试公式都在这里了
- 事件相关去同步 (ERD) 和事件相关同步化 (ERS)在脑电信号研究中的应用
- android:versionCode和android:versionName 用途
- kotlin 计算平方_Kotlin程序计算自然数之和
- 【C#】【引用加原创】C#实现kalman滤波
- InfoComm China 2019,揭秘“NVIDIA风格”数据科学!
- hdu 1760 DFS+博弈
- Mybatis SQL 语句中 IF函数不支持
- 【三】Jmeter:测试片段
- 存储单位 KB MB bit
- android开发完全退出activity
- 爬虫python代码网易云_超简单的Python爬虫之网易云音乐的下载
- css td中画斜线,css 模拟表格斜线
- cdn对动态网站有作用吗_使用CDN对动态网站内容加速有效果吗
- 360自动收录js代码如何添加
- Taro 3.x 开发 APP 记录 (持续记录中。。。)
- 剪枝计算机,α-β剪枝 - 电脑黑白棋 - 黑白棋天地
- 让windows保持常亮(不息屏,不锁屏,不进入屏保)
- Java HashSet
热门文章
- 2011年使用天正建筑8.0注册版(附注册机)
- 如何建立JSP操作用以提高数据库访问效率
- android:layout_with=,android – 难以理解layout_alignWithParentIfMissing
- HTML5圆形线性渐变,css中linear-gradient()函数是干什么的?实现线性渐变的圆形边框(代码)...
- java mysql insert_MySQL中INSERT的一般用法
- php文件下载到服务器代码,PHP文件下载实例代码浅析
- linux下创建多进程,linux之多进程fork:进程创建
- git的一些知识梳理以及命令操作
- 第十六届智能车竞赛室内视觉AI组别靶标使用说明
- 2021年春季学期-信号与系统-第十五次作业参考答案-第二小题参考答案