很能体现FPGA硬件思维的一道面试题

embedded/2024/11/21 15:33:49/

ec565903202c4cb7a0ef13caf38c7c61.jpeg

在面试的时候,要在短时间检查一个人的水平,需要面试官有针对性的问些问题,这里举例说一个很能体现FPGA硬件思维的一道面试题。

  • if-else及case语句条件判断的优先级

这里先列出几个例子,大家可以先自行判断以下:

example1

module test_ex1(input a,b,c,d,sel0,sel1,sel2,sel3,output reg z);always @(a or b or c or d or sel0 or sel1 or sel2 or sel3)
beginz=0;if (sel0) z=a;if (sel1) z=b;if (sel2) z=c;if (sel3) z=d;
endendmodule
042e62914f12e036d5824258ab230007.png图1:example1

example2

module test_ex2(input a,b,c,d,sel0,sel1,sel2,sel3,output reg z);always@(a or b or c or d or sel0 or sel1 or sel2 or sel3)
beginif(sel0)z = d;else if(sel1)z = c;else if(sel2)z = b;else if(sel3)z = a;elsez = 0;
endendmodule
957189d035d889fcf8b453ce759ed6f6.png图2:example2

example3

module test_ex3(input a,b,c,d,sel0,sel1,sel2,sel3,output reg z);always@(a or b or c or d or sel0 or sel1 or sel2 or sel3)
beginif(sel0)z = d;else if(sel1)z = c;else if(sel2)z = b;else if(sel3)z = a;
endendmodule
6b9b5c35ed540c629613f6e06c73f8f9.png图3:example3

example4

module test_ex4(input a,b,c,d,sel0,sel1,sel2,sel3,output reg [3:0] z);always @(a or b or c or d or sel0 or sel1 or sel2 or sel3)
beginz=0;if (sel0) z[0]=a;if (sel1) z[1]=b;if (sel2) z[2]=c;if (sel3) z[3]=d;
endendmodule
5347974904e48cfd380dd6628cd1f0cb.png图4:example4

example5

module test_ex5 
#(parameter N=8)
(input  logic [N-1:0] a, b, c, d,input  logic [  1:0] select,output logic [N-1:0] y
);always_comb begin case (select)2'b00: y = a;2'b01: y = b;2'b10: y = c;2'b11: y = d;endcase end 
endmodule: test_ex5
5fb308baa0ac056ca41ab8e40b896537.png图5:example5

example6

module test_ex6 (
input  logic [3:0] d_in,
output logic [1:0] d_out,
output logic       error
);
timeunit 1ns; timeprecision 1ns; always_comb begin error = '0;case (d_in) inside 4'b1???: d_out = 2'h3; // bit 3 is set4'b01??: d_out = 2'h2; // bit 2 is set4'b001?: d_out = 2'h1; // bit 1 is set4'b0001: d_out = 2'h0; // bit 0 is set4'b0000: begin         // no bits setd_out = 2'b0;error = '1;endendcase 
end 
endmodule: test_ex6
74ed291859a8a4ea48059a2de0f722c2.png

以上几个示例,大家可以先思考一下每个例子的判断条件优先级,然后再结合电路图对照一下自己的想法对不对。

总结

"if-else的逻辑判别是有优先级的,而case的逻辑判断条件是并列的。"

上面是某些工具书上常见的判断逻辑,也是误导很多新手的结论。

从结果来看判断的优先级不一定是第一个,和后续的书写语句有很大关系(if有没有else、else条件是否完备、case条件是否完备等)。

其中,case语句可以使用unique、unigue0和priority修饰符进行综合条件限制,但是一般不建议使用,要按照自己的思路去书写“电路”。

最后就是常说的串行或者并行应该指语法判断过程,并非指我们说的电路,实际的判断过程还是用硬件思维去思考。

大家在面试时候遇到或者问过什么问题?欢迎大家评论区留言


http://www.ppmy.cn/embedded/139370.html

相关文章

探索Linux软件包管理的进化之路:从源码编译到Snap包的飞跃

目录 引言一、Linux软件包管理的发展过程1、从源代码安装软件2、使用软件包安装软件3、高级软件包管理工具 二、Deb软件包管理1、查看2、安装3、卸载 三、 使用APT工具管理软件包1、基本功能2、解决依赖关系3、软件包更新4、查询软件包5、安装软件包6、卸载软件包7、升级软件包…

前端三剑客(二):CSS

目录 1. CSS 基础 1.1 什么是 CSS 1.2 语法格式 1.3 引入方式 1.3.1 行内样式 1.3.2 内部样式 1.3.3 外部样式 1.4 CSS 编码规范 2. 选择器 2.1 标签选择器 2.2 id 选择器 2.3 class 选择器(类选择器) 2.4 复合选择器 2.5 通配符选择器 3. 常用 CSS 样式 3.1 c…

03 —— Webpack 自动生成 html 文件

HtmlWebpackPlugin | webpack 中文文档 | webpack中文文档 | webpack中文网 安装 npm install --save-dev html-webpack-plugin 下载html-webpack-plugin本地软件包 npm i html-webpack-plugin --save-dev 配置webpack.config.js让webpack拥有插件功能 const HtmlWebpack…

【MATLAB代码】基于IMM(Interacting Multiple Model)算法的目标跟踪,所用模型:CV、CA、CT

文章目录 3个模型的IMM(代码简介)源代码运行结果代码介绍总结 3个模型的IMM(代码简介) 本MATLAB代码实现了基于IMM(Interacting Multiple Model)算法的目标跟踪。它使用三种不同的运动模型(匀速…

优选算法(双指针)

1.双指针介绍 双指针算法是一种常用的算法思想,特别适用于处理涉及阵列、链表或字符串等线性数据结构的问题。通过操作两个一个指针来进行导航或操作数据结构,双指针可以最大程度优化解决方案的效率。提高效率并减少空间复杂度。 在Java中使用双指针的核…

【蓝桥杯C/C++】翻转游戏:多种实现与解法解析

博客主页: [小ᶻZ࿆] 本文专栏: 蓝桥杯C/C 文章目录 💯题目💯问题分析解法一:减法法解法二:位运算解法解法三:逻辑非解法解法四:条件运算符解法解法五:数组映射法不同解法的比较…

ssm126基于HTML5的出租车管理系统+jsp(论文+源码)_kaic

设计题目:出租车管理系统的设计与实现 摘 要 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以…

【网络系统管理】Centos7——配置主从mariadb服务器案例(下半部分)

【网络系统管理】Centos7——配置主从mariadb服务器案例-CSDN博客 接上个文档,我们已经完成了主服务器创建数据库备服务器可以看到 一、在DBMS2查看信息 File,Position这两个字段的数据要记好,等一下需要用到 show master status; 二、在…