【题目精刷】2023联发科-数字IC-实习

为了能够在做题目的过程中学习到需要的知识,对每道题知识参考或者知识详情都做了详细的说明。方便后续复习。欢迎对文中的解答批评指正。

简答题(共8道题|合计100分|请根据题目要求进行合理回答)

1 (20分) [简答题] Figure1 电路是数字设计中常用的 2选1 MUX,请:

a) 列出其真值表
b) 列出其卡诺图
c) 写出其最简逻辑表达式
d) figure2 是在用AOI实现MUX结构(非最简逻辑表达式,但存在一个错误的CELL导致逻辑错误, 请找出这个CELL。

在这里插入图片描述


a)
真值表:

A(c0)B(c1)CD
0000
0010
0100
0111
1001
1010
1101
1111

b)
在这里插入图片描述

c)
D = A C ‾ + B C D=A\overline{C}+BC D=AC+BC

d)
现在:
D = ( ( A & B ) ∣ ( ! B & C ) ) ∣ ( ! C & A ) D = ((A \& B) | (!B \& C)) | (!C \& A) D=((A&B)(!B&C))(!C&A)

INV0 用错,去掉即可。

D = ( ( A & B ) ∣ ( B & C ) ) ∣ ( ! C & A ) D = ((A \& B) | (B \& C)) | (!C \& A) D=((A&B)(B&C))(!C&A)


2 (5分) [简答题] ASIC flow中综合工具的作用是什么?综合的结果主要关注什么指标?

综合工具的作用:完成RTL级到门级网表的转换。

  1. translation:把设计的HDL描述转化为GTECH库元件组成的逻辑电路;GTECH库是Synopsys公司提供的通用的、独立于工艺的元件库。
  2. mapping:将GTECH库元件映射到某一特定的半导体工艺库上,此时的电路网表包含了相关的工艺参数。
  3. optimization:根据设计者设定的时延、面积、线负载模型等综合约束条件对电路网表进一步优化的过程。

综合结果关注的指标:

  • 电路的面积
  • 电路的功耗
  • 电路的时序

3 (10分) [简答题] 下图中的3种图形(都是两两相邻。如何把这个正方形划分为形状相同的4块,每块上要有3个不同的图形?

在这里插入图片描述


  • 正方形划分成现状相同的四块就行。
  • 每块上有3种图形。

在这里插入图片描述


4 (10分) [简答题] 请选择项您所参与的的项目,简单说明项目内容,简述您所做的工作内容,并列举一项项目中遇到的困难和解决思路?
5 (5分) [简普题] Perl是种脚本语言,有强大的正则表达式,特别擅长对文本的处理,还可以用Perl编制程序案产生别的程序,在IC验证设计中被广泛应用,极大的提高工作效率。图1是份不完整的per代码有5处需要补充(#code_0~#code_4),请把代码朴充完整,达成图2所示的运行结果。

#code_0:
#code_1:
#code_2:
#code_3:
#code_4:

#!usr/bin/perl   
use strict; 
use Encode;  
use Switch;

my $i = 0;
for($i; $i<5; $i++){
    my $str = "mediatek: that's everyday genius !";
    switch($i){
        case 0 {
            #code_0;
            print "$i:$str \n";
        }
        case 1 {
            #code_1;
            print "$i:$str \n";
        }
        case 2 {
            #code_2;
            print "$i:$str \n";
        }
        case 3 {
            $str =~ m/: that's/;
            #code_3;
        }
        case 4 {
            $str =~ m/: that's/;
            #code_4;
        }
    }
}

在这里插入图片描述


Perl的正则表达式的三种形式,分别是匹配,替换和转化:

  • 匹配:m//(还可以简写为//,略去m)
  • 替换:s///
  • 转化:tr///

case 0:首字母M大写
case 1: 字母T大写
case 2: 所有字母大写
case 3:只输出第一个单词
case 4:输出后两个单词

配置perl环境:

  • 下载安装 strawberryPerl
  • 配置环境变量 [安装路径]\Strawberry\perl\bin
  • 安装题目需要的模块
    cpan strict;
    cpan Encode;
    cpan Switch;
    
  • 补全脚本 [脚本名].pl
    #!/usr/bin/perl
    use strict; 
    use Encode;  
    use Switch;	
    
    my $i = 0;
    for($i; $i<5; $i++){
        my $str = "mediatek: that's everyday genius !";
        switch($i){
            case 0 {
                $str =~ s/m/M/;
                print "$i:$str \n";
            }
            case 1 {
                $str =~ tr/t/T/;
                print "$i:$str \n";
            }
            case 2 {
                $str =~ tr/a-z/A-Z/;
                print "$i:$str \n";
            }
            case 3 {
                $str =~ m/: that's/;
                print "$i:$` \n";
            }
            case 4 {
                $str =~ m/: that's/;
                print "$i:$' \n";
            }
    
        }
    }
    
  • 运行脚本 perl [脚本名].pl
    在这里插入图片描述

6 (15分)[简答题]某电路时序图如下所示,简述该电路的功能,并用verilog代码实现。

说明: clk/in[7:0]是input端, pedge[7:0]是output端。

在这里插入图片描述


电路功能:检测输入数据每位的上升沿。

Verilog 代码实现:
上升沿滞后一个周期。

`timescale 1ns/1ps
module pedge_detecte(
    input            clk  ,
    input            rstn ,
    input      [7:0] in   ,
    output reg [7:0] pedge
);

reg R_in;

always @(posedge clk or negedge rstn)
begin
    if(~rstn) 
    begin
        R_in <= 8'b0;
    end 
    else
    begin
        R_in <= in;
    end
end

always @(posedge clk or negedge rstn)
begin
    if(~rstn) 
    begin
        pedge <= 8'b0;
    end 
    else
    begin
        pedge <= in & (~R_in); // 这里是bitwise非~,千万不要用成逻辑非 !
    end
end

endmodule

7 (15分) [简答题] C语言实现字符串反转并打印出来例如:输入”abcd"输出”dcba"

字符串后面带一个’\0’字符。

#include <stdio.h>

int main()
{
    char str[] = "abcd";
	int size = sizeof(str);
	char str_inv[size];
	for(int i = 0; i < size-1; i++){
		str_inv[i] = str[size-i-2];
	}
	printf(str_inv);
    return 0;
}

8 (20分) [简答题] 请从以下的两道试题中,任选一题进行作答。作答时请表注明题号

第一题: SystemVerilog是广泛使用的验证语言,请至少例举3个它为验证工作提供的功能;UVM作为广泛使用的验证方法学,它将仿真过程切分为哪3个主要的phase?

第二题: 设一段信号可能由频率为0.9MHz,0.8MHz,0.6MHz的三个余弦信号组成
(1) 为无失真恢复原信号,采样率fs至少为多少?
(2) 在(1)的条件下,为区别三种信号,至少需要采集多长时间ts的数据?


第一题:
参考:《SYSTEM VERILOG验证-测试平台编写指南》
SystemVerilog作为硬件验证语言,相比HDL具有的典型性质:

  • 1 受约束的随机激励生成。
  • 2 功能覆盖率。
  • 3 更高层次的结构,尤其是面向对象的编程。
  • 4 多线程及线程间的通信。
  • 5 支持HDL数据类型。如Verilog的四状态数值。
  • 6 集成了时间仿真器,便于对设计施加控制。

参考:《UVM实战》
UVM仿真过程切分为3个主要的phase:
主要有3类phase,但是主要是哪3个,我也不清楚,学艺不精。
UVM中的phase主要分为3类,即按顺序执行build phase、run-time phase和clean up phase。

  1. Build phases-构建和配置testbench;
  2. Run-time phases-在testbench上运行test case(会消耗仿真时间);
  3. Clean up phases-在该阶段报告test case的结果。

第二题:
(1):
根据奈奎斯特采样定理,采样率fs需要大于两倍fmax,即 1.8MHz。

(2):
fft频率分辨力:1/N * fs ,这里需要分辨最小频率间隔位0.1MHz,将fs = 1.8MHz带入,N > 18。则最小采样时间为 18 * (1/1.8MHz) = 10us。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lu-ming.xyz

觉得有用的话点个赞吧 :)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值