笔试题-2023-思特威-数字电路设计(CIS)【附答案】

1、数字IC设计的流程包含哪些?

答案及解析*:

数字 IC 设计的流程一般包括以下几个阶段:

设计规划:确定设计的目标、需求和限制,例如设计的功耗、面积、性能、设计周期等。

逻辑设计:使用高级语言如 Verilog 或 VHDL 或者逻辑抽象图进行设计。在逻辑设计阶段,需要进行模块化,将整个设计分成功能模块,每个模块负责一个特定的任务。此外,在逻辑设计阶段,也需要对设计进行验证和仿真,以确保设计符合规范和预期的功能。

验证:此阶段通过该电路的功能模拟、电路模拟和行为模型的正式形式来验证电路的正确性。这些方法可用来发现电路中的故障,使得解决任何问题更容易。验证是确保生产出的电路与所期望的表现一致的关键所在。

合成:将逻辑设计转换为物理实现:针对宏模块和时序,自动将逻辑转换成对象。使用EDA工具将设计转换成基于标准单元库的低功耗设计,可以进行下一步的物理设计。

物理设计:确保电路能够正常运行以及集成到芯片上的任务。物理设计包括的内容包括:布局设计、线路的设计、管脚设计和芯片的物理验证等工作。

前端验证:在接近或达到版图后的设计阶段,需要进行以SPICE模拟器或闪存器模拟器为主的前端验证,包括验证功耗、电压稳定性等。

物理验证:该过程使用真实的芯片和IC测试设备进行检测以确保芯片可以正常运行。

以上是数字 IC 设计的一般流程,但在实际应用中可能还涉及到其他步骤,如低功耗设计和电磁兼容性(EMC)设计等。

2、简述下D-Latch与D- Flipflop的区别

答案及解析*:

D-Latch和D-Flip Flop是数字电路中两种常见的存储器元件,它们的主要区别在于时序控制和输出状态的稳定性。具体区别如下:

时序控制:D-Latch 的触发信号是时钟信号和使能信号,而D-Flip Flop的触发信号只有时钟信号。D-Latch时钟边沿到达时,如果使能端是高电平,则数据输入端的数据会被存储到输出端。相比之下,D-Flip Flop在时钟边沿到达时始终将数据输入“锁存”到输出端,它不能由外部控制使能端来直接控制输出状态。

稳定性:由于D-Latch内部没有触发器,所以在时序控制下其输出会随输入变化而实时变化,输出状态在时钟信号到来后才被锁定。这可能会导致稳定性问题,因为输入和输出信号之间存在一定的延迟。而在D-Flip Flop中,输入信号只在时钟边沿到来时发生变化,并在时钟后保持不变,输出信号也在此时被锁定。因此,D-Flip Flop比D-Latch更稳定。

应用场景:由于D-Flip Flop的输出锁定更加稳定,因此在需要稳定输出的应用场合,如计数器和时序电路等中经常使用D-Flip Flop。而在需要动态更改输出的应用场合,如移位寄存器和存储器读写等,则常使用D-Latch。

总之,尽管D-Latch和D-Flip Flop的结构很相似,但它们在时序控制和输出状态的稳定性上存在一定的差异,在电路设计中需要根据具体需求来选择适合的存储器元件。

3、用二进制补码运算推导出80-120的结果(1bit符号位,7bit数据位)

答案及解析*:

首先,将80和120转换为二进制,为01010000和01111000。

接着,由于120是负数,因此需要先求出120的补码。计算步骤如下:

将120转换成二进制:01111000

取反,得到反码:10000111

将反码加1,得到补码:10001000

现在,我们将80和120的二进制表示与符号位结合,形成7位二进制补码,得到:

80: 01010000

120: 10001000

将这两个数相加,如下所示:

得到的结果为11011000。因为我们假设最高位为符号位,因此,这个二进制数应该被解释为一个负数。我们可以将结果转换为十进制,此时需要先将二进制补码转换为原码,步骤如下:

对补码按位取反,得到反码:10100111

将反码加1,得到原码:10101000

因此,11011000对应的是-40。因此,用二进制补码运算推导出80-120的结果为-40。

4、请问图中DFF C的setup及hold timing是否满足?并请计算出timing slack值,DFF标准单元的setup要求是0.4ns, hold要求是0.3ns,CK到Q的延迟Tcq=0.6ns,时钟周期是10ns.

答案及解析*:

首先,我们需要理解 setup time 和 hold time 的概念,以便能够回答这个问题。在时序设计中,setup time 表示数据输入端的信号必须在时钟信号到达前一定的时间内保持不变,以使数据稳定地传输到 DFF 中,否则会导致 DFF 无法正确地捕获数据;hold time 表示数据输入端的信号必须在时钟信号到达后一定的时间内保持不变,以确保数据可靠地保留在 DFF 中。

根据题目给出的数据,时钟周期是 10ns,因此时钟的频率为 1/10ns = 100 MHz。同时,Tcq(时钟信号到达到达 Q 输出的延迟时间)为 0.6ns,setup time 要求为 0.4ns,hold time 要求为 0.3ns。因此,我们可以使用下面的公式来计算 timing slack:

Timing slack = Tclk - Tsetup - Thold - Tcq - Tcomb_delay

其中,

Tclk = 10 ns,是时钟周期

Tsetup = 0.4 ns,是 setup time 要求

Thold = 0.3 ns,是 hold time 要求

Tcq = 0.6 ns,是时钟信号到达到达 Q 输出的延迟时间

Tcomb_delay = 0 ns,因为没有任何组合路径需要考虑

将以上数值代入公式中计算,得到 timing slack 的值为:

Timing slack = 10 ns - 0.4 ns - 0.3 ns - 0.6 ns - 0 ns = 8.7 ns

由于 timing slack 的值大于 0,因此 setup 和 hold time 都能够满足,这意味着该设计是可靠的。值得注意的是,由于 slack 值比较大,因此还有相当大的优化空间。我们可以通过调整电路布局、选择更快的器件或减少存储器中的延迟等措施来减少 slack 值,以提高电路的性能和可靠性。

5、1000个智能机器人在全自动无人车间内工作,随着工作时间累计,他们中的部分有可能出现异常。每个机器人搭载的校准程序都可以检测出,车间内的其余机器人是否存在异常,但是技术限制,它们无法检测其自身是否出现了异常且无法跟其他机器人通信。依据安全条例,当机器人判断自身异常后,就需要在当前工作日后进行自我销毁、一旦出现异常机器人,车间产品的就会出现错误、接下来,控制中枢就将向车间内的机器人发送指令,命令它们启动校准程序。若某一天,车间产品确实被检测出了错误,且在第7天所有异常机器人全部销毁,向有多少个异常机器人?

答案及解析*:

这个问题可以建模为著名的“100个罪犯分苹果”问题,具体方法如下:

假设有 n 台机器人,我们编号为 1 到 n。我们同时假设只有一个机器人会出现异常,在第 x 天出现异常。

为了解决这个问题,我们可以让每个机器人自己翻开一个无人知晓的随机数,然后把所有机器人的随机数相加除以 n 取余数,得到一个数 m,表示第 m 台机器人需要销毁自己。这样,只要有一台机器人在第 x 天把 m 的值翻开之后发现它等于自己的编号,就知道了自己是异常机器人,需要在第 x 天以后进行自我销毁。

为了求得 m 的值,我们可以假设第一台机器人需要销毁自己,然后依次计算第 2 台、第 3 台……第 n 台机器人需要销毁自己的概率。假设现在到了第 i 台机器人,那么前 i - 1 台机器人都没有需要销毁自己,所以第 i 台机器人需要销毁自己的概率是 1/(n-i+1)。如果第 i 台机器人不销毁自己,那么 m 的值就不变;否则,m 的值就变成了第 i 台机器人的编号。

因此,我们可以得到如下的递推公式:

P(i) = 1 / (n-i+1) * [1 + P(i+1)], i = 1, 2, …, n-1

其中,P(i) 表示第 i 台机器人需要销毁自己的概率,P(n) = 0。则可以用上述公式求解问题,即有异常的机器人数量为:

异常机器人数量 = n * [1 - P(1)]

在具体计算时,可以从机器人数量 n 递减到 1,按照上述公式计算出每个 P(i),最后得到异常机器人的数量。

6、用Verilog实现4bit转 16bit的功能,具体描述如下:

输入异步复位信号rst i.输入数据时钟cIk i.同步有效信号valid i.输入数据dat i[3:0],输入输出时钟clko i.输出同步信号valid_0输出数据dat _o[15:0],clko i的频率是clk i频率的1/4及以上。

答案及解析*:

下面是一个基于 Verilog 的 4 位到 16 位编码器的实现:

该实现基于状态机,输入每组 4-bit 数据后将其存储到一个 16-bit 的寄存器中,直到接收到第 4 组数据。接收到最后一组数据后,将其存储到输出寄存器中并在下一个输出时钟上输出,之后将计数器和 valid_o 复位,等待接收下一组数据。

需要注意的是,该实现假定输入数据与输出数据的时钟频率比为 1:4 或更高。此外,需要根据具体的目标平台及其综合工具对生成的电路进行合理优化,以确保其符合相关的时序和面积需求。

整理不易,如果觉得对你有帮助的话,可以收藏下来慢慢刷!

回顾往期精彩笔试真题:

数字IC前端笔试常见大题整理(简答+手撕)

笔试题-2023-禾赛-FPGA(附答案及解析)

笔试题-2023-复睿微-数字芯片设计【附解析】

笔试题-2023-锐捷-FPGA(附答案及解析)

笔试题-2023-星宸-数字IC设计(附答案及解析)

笔试题2023-燧原-数字IC设计(附答案及解析)收藏不易,如果觉得对你有帮助的话,可以收藏下来慢慢刷!

#笔试##数字IC##芯片##你为什么选择硬件行业##春招你拿到offer了吗#
全部评论
24年的笔试题,1和4基本相同
点赞 回复 分享
发布于 2024-10-23 18:18 广东
离谱,全ai做题,还有错
点赞 回复 分享
发布于 2024-09-04 16:17 陕西
Helpful answer positive rating
点赞 回复 分享
发布于 2024-08-24 15:08 新加坡
这是什么时候的笔试题?
点赞 回复 分享
发布于 2023-05-19 12:03 广东
没有一些选择题吗?
点赞 回复 分享
发布于 2023-05-17 22:42 河北

相关推荐

吴offer选手:HR:我KPI到手了就行,合不合适关我什么事
点赞 评论 收藏
分享
ResourceUtilization:你是我见过最美的牛客女孩
点赞 评论 收藏
分享
大厂的边缘业务去了也没啥用,也得不到任何成长,尤其是审核、中台这种价值产出不清楚的,别被大厂光环蒙蔽了双眼,如果你找实习工作,优先找"离钱近的业务",钱多的业务福利年终奖啥的都不会差的
陈100:呵呵。 你在大厂工作2年,后面准备好,可以随便跳很多公司。 去小厂,现在拿到所谓多的钱,有啥用啊,未来没有了。 而且应届生,工作没几年的,也不是赚钱的时间。
点赞 评论 收藏
分享
评论
8
66
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务