目录

抛砖引玉

举例练习

写在最后


抛砖引玉

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)让三元条件运算符(?:)在你的设计中发挥作用相关推荐

  1. HDLBits 系列(42)根据仿真波形来设计电路之时序逻辑

    文章目录 前言 电路设计1 原题复现 题目解析 我的设计 电路设计2 原题复现 题目解析 我的设计 电路设计3 原题复现 题目解析 我的设计 电路设计4 原题复现 题目解析 我的设计 前言 上篇博文讨 ...

  2. HDLBits 系列(41)根据仿真波形来设计电路之组合逻辑

    文章目录 Sim/circuit1 原题复现 我的设计 Sim/circuit2 原题复现 题目分析 我的设计 Sim/circuit3 原题复现 题目分析 我的设计 Sim/circuit4 原题复 ...

  3. HDLBits 系列(18) BCD码计数器的设计

    目录 原题复现 审题 我的设计 原题复现 先给出原题: Build a 4-digit BCD (binary-coded decimal) counter. Each decimal digit i ...

  4. HDLBits 系列(0)专题目录

    本篇博文是近来总结HDLBits系列的目录,点击蓝色字体即可进入查看具体内容. HDLBits 系列(1)从HDLBits中获取灵感,整顿自己,稳步前行 HDLBits 系列(2)如何避免生成锁存器? ...

  5. Python是否具有三元条件运算符?

    如果Python没有三元条件运算符,是否可以使用其他语言构造来模拟一个? #1楼 对于Python 2.5及更高版本,有一种特定的语法: [on_true] if [cond] else [on_fa ...

  6. HDLBits 系列(31)Serial Receiver and Datapath

    目录 序言 原题复现 我的设计 序言 上篇博文: HDLBits 系列(30)Serial Receiver 写了串行接收器如何接收8位串行数据,正确接收8位串行数据后给一个接收完毕标志信号,这篇博文 ...

  7. 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 ...

  8. HDLBits 系列(1)从HDLBits中获取灵感,整顿自己,稳步前行

    目录 前言 对HDLBits的夸赞 最后想说的话 前言 坚持一件事情很难系列,有些事情看似简单,但是坚持做下去确实会有所收获,举个不恰当的例子,总搞一些自己觉得难的东西,会让自己的博客断更,困难的东西 ...

  9. HDLBits 系列(38)值得一看的状态机设计题目

    目录 背景 原题复现 我的方案 状态转移图 我的设计 更新方案 FPGA/IC群推荐 背景 这是这个系列中的一个状态机的题目,但是相比于给了你完整状态转移图之类的题目,这个题目还是稍微有点难的,我实在 ...

最新文章

  1. CSS实现各类分栏布局
  2. 信息系统项目管理师考试公式都在这里了
  3. 事件相关去同步 (ERD) 和事件相关同步化 (ERS)在脑电信号研究中的应用
  4. android:versionCode和android:versionName 用途
  5. kotlin 计算平方_Kotlin程序计算自然数之和
  6. 【C#】【引用加原创】C#实现kalman滤波
  7. InfoComm China 2019,揭秘“NVIDIA风格”数据科学!
  8. hdu 1760 DFS+博弈
  9. Mybatis SQL 语句中 IF函数不支持
  10. 【三】Jmeter:测试片段
  11. 存储单位 KB MB bit
  12. android开发完全退出activity
  13. 爬虫python代码网易云_超简单的Python爬虫之网易云音乐的下载
  14. css td中画斜线,css 模拟表格斜线
  15. cdn对动态网站有作用吗_使用CDN对动态网站内容加速有效果吗
  16. 360自动收录js代码如何添加
  17. Taro 3.x 开发 APP 记录 (持续记录中。。。)
  18. 剪枝计算机,α-β剪枝 - 电脑黑白棋 - 黑白棋天地
  19. 让windows保持常亮(不息屏,不锁屏,不进入屏保)
  20. Java HashSet

热门文章

  1. 2011年使用天正建筑8.0注册版(附注册机)
  2. 如何建立JSP操作用以提高数据库访问效率
  3. android:layout_with=,android – 难以理解layout_alignWithParentIfMissing
  4. HTML5圆形线性渐变,css中linear-gradient()函数是干什么的?实现线性渐变的圆形边框(代码)...
  5. java mysql insert_MySQL中INSERT的一般用法
  6. php文件下载到服务器代码,PHP文件下载实例代码浅析
  7. linux下创建多进程,linux之多进程fork:进程创建
  8. git的一些知识梳理以及命令操作
  9. 第十六届智能车竞赛室内视觉AI组别靶标使用说明
  10. 2021年春季学期-信号与系统-第十五次作业参考答案-第二小题参考答案