在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!)    创芯人才网--重磅上线啦!
查看: 22022|回复: 20

[原创] 英伟达2012年4月ASIC design intern笔试

[复制链接]
发表于 2012-4-7 17:45:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

1,公式化简然后画电路图,要求用尽量少的门(简单)

2,序列检测,用状态机实现测出0121则输出1,否则输出为0

3,就题二写testbench

4,改错并优化,代码如下

Module Ua,b,c,d,e,sel,out;

Input [15:0] a,b,c,d,e;

Input [1:0] sel;

Output [15:0] out;

wire [31:0] out;

always@(a or b or c or d or sel or out)begin

case(sel)

2’b00ut=a*b;

2’b01ut=c*d+c;

2’b10ut=(e+1)/4;

Endcase

End

endmodule

----------------------------------我改的---大家帮我看看改得行不行---

Module Ua,b,c,d,e,sel,out;

Input [15:0] a,b,c,d,e;

Input [1:0] sel;

Output [31:0] out;

Wire [16:0];

Reg [31:0] out;

Assign m = e+1;

always@(a or b or c or d or e or sel or out)begin

case(sel)

2’b00:out<=a&b[0]+{a,0} & b[1]+{a,2{0}} & b[2]+{a,3{0}} & b[3]+{a,4{0}} & b[4]+{a,5{0}} & b[5]+{a,6{0}} & b[6]+{a,7{0}} & b[7]+{a,8{0}} & b[8]+{a,9{0}} & b[9]+{a,10{0}} & b[10]+{a,11{0}} & b[11]+{a,12{0}} & b[12]+{a,13{0}} & b[13]+{a,14{0}} & b[14]+{a,15{0}} & b[15];

2’b01:out<=c+d&c[0]+{d,0}& c[1]+{d,2{0}} & c[2]+{d,3{0}} & c[3]+{d,4{0}} & c[4]+{d,5{0}} & c[5]+{d,6{0}} & c[6]+{d,7{0}} & c[7]+{d,8{0}} & c[8]+{d,9{0}} & c[9]+{d,10{0}} & c[10]+{d,11{0}} & c[11]+{d,12{0}} & c[12]+{d,13{0}} & c[13]+{d,14{0}} & c[14]+{d,15{0}} & c[15];

2’b10:out<={17{0},m[16:2]};//商的整数部分

2’b11:out<={30{0},m[1:0]};// 商的小数部分

Endcase

End

Endmodule

5,perlC实现二进制文件“binary.txt,转化为十进制文件并保存到“decimal.txt”----不会,大家有谁会perl的,能否共享答案

发表于 2012-4-10 12:21:29 | 显示全部楼层
没看明白你是凭什么改出 的
发表于 2012-4-10 14:44:34 | 显示全部楼层
out不应该在敏感电平列表中,组合逻辑中不要用非阻塞赋值
呵呵,让我现场做这种乘除法的程序,做不来
 楼主| 发表于 2012-4-10 16:42:47 | 显示全部楼层
回复 2# my2817


    首先声明我是菜鸟,刚入门的。。。我这样改是想把乘法用移位并相加实现,题目要优化,我想用移位应该比用乘法器好一点,不知道对不对
 楼主| 发表于 2012-4-10 16:45:21 | 显示全部楼层
回复 3# lanliang


    哦,out是不需要。。。呵呵。。。失误。。。
但是我觉得用reg型的做输出,是不是数据比较稳定啊?!求指教
发表于 2012-4-30 14:23:59 | 显示全部楼层
回复 1# littlelijia


    这个改错有几个地方:
   1). wire ... out应该改成reg ... out.
   2). out 不应该出现在always的敏感电平表中。
   3). case缺少default。

   优化的地方,我只知道除4的可以改成左移。其他的不会。不过不管怎么看,你优化的地方都有问题。首先,你不保证关于乘法的一定是“优化”,也可能是恶化。另外,除法的“优化”是错误的。

脚本部分,不清楚十进制文件是个什么东西,这个binary.txt里面存放的是什么东西?二进制数字么?
发表于 2012-5-1 09:39:46 | 显示全部楼层
回复 6# acgoal

没有default应该不算是错吧,DC综合的时候设定full_case即可。
后面的二进制到十进制转换,主要考了两个,一个是数制转换,再一个就是文件IO
发表于 2012-6-28 22:30:52 | 显示全部楼层
module U(a,b,c,d,e,sel,out);
input [15:0] a,b,c,d,e;
input [1:0] sel;
output [31:0] out;
wire [31:0] out;
always@(a or b or c or d or sel or e)begin
case(sel)
2’b00: out=a*b;
2’b01: out=c*d+c;
2’b10: out=(e+1)/4;
default: out='bx;
endcase
end
endmodule
发表于 2012-7-17 13:00:13 | 显示全部楼层
这个题目的优化是不是要求复用乘法器和加法器??
发表于 2012-7-25 22:14:58 | 显示全部楼层
偶然看到第五题 认为答案如下
open BINARY_IN,"<binary.txt" or die "can not open file binary.txt";
open DECIMAL_OUT,">decimal.txt" or die "can not create file decimal.txt";
foreach (<BINARY_IN>){
    my @binary_strings = split;
    foreach my $a (@binary_strings){
    $a = "0b" .  $a;
    printf DECIMAL_OUT "%d ",oct($a);
    }
    printf DECIMAL_OUT "\n";
}
close BINARY_IN;
close DECIMAL_OUT;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /3 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-20 23:32 , Processed in 0.030902 second(s), 11 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表