1。将new_A = eco_sel ? ( eco_mask & A ) : A 分别用如下的门实现,用最少门数。
实现2输入NOR门。
这种让用nor实现的问题以前论坛上就出现过,但是一直没有人给出个答案。这次栽跟头了,不会做!
哪个牛人给个答案阿,也算是造福后人啦!
觉得答案正确的话,一定给加分哈!
附:
n详细笔试题(ASIC)
答的很扯,留题走人。
基本要求:英文作答,不许写Verilog/VHDL,可以用gate或schematic。
1。将new_A = eco_sel ? ( eco_mask & A ) : A 分别用如下的门实现,用最少门数。
a. 2输入NAND门。b. 2输入NOR门。
2。序列检测,'000', '010', '101',序列可变,000后是010下来是111。
3。Verilog代码查错。原代码基本如下:
always @( sel_and and sel_or and source_a and source_b )
begin
if( sel_and )
begin
data_0 = source_a & source_b;
sel_0 = 1'b1;
end
else if( sel_or )
begin
data_1 = source_a | source_b;
sel_0 = 1'b1;
end
end
assign sel_1 = sel_xor | sel_nxor;
assign data_1 = sel_1 ? source_c ^ source_d : ~( source_c ^ source_d );
always @( posedge clk )
begin
if( !rst_ )
data <= 1'b0;
else begin
if( sel_0 )
data <= data_0;
if( sel_1 )
data <= data_1;
end
(代码记不清了,大概就这样)
4。描述function
a) out_0 = A[0] | A[1] | A[2] | A[3] | A[4] | A[5] | A[6] | A[7];
b) out_1 = A[0]&A[1] | A[2]&A[3] | A[4]&A[5] | A[6]&A[7] | (A[0]||A[1]) & (A[2]|A[3]) & (A[4]|A[5]) & (A[6]&|A[7]) | (A[0]||A[1]|A[2]|A[3])&((A[4]||A[5]|A[6]|A[7]));
5。使用Perl ,Tcl 或 C实现如下的功能:
从文件mail.list中读取联系人和联系邮箱,并在其中读取@nvidia.com的联系人,按字母表排序并写入nvidia.list。
mail.list文件内容大致类似如下:
<name> <Email>
Jenny Jenny@163.com
Jojo jojo@tom.com
Keke keke@nvidia.com
Lily lily@yahoo.com
6。A,B两人,卖了x头羊,每头羊x dollar,然后分钱。A,B轮流取10 dollar, A先。问是否公平,及建议。
完毕。
没希望了,留给其他人增加经验吧。
[ 本帖最后由 sarahwang 于 2008-10-12 12:47 编辑 ]



最新回复
samkid (2008-10-11 21:21:01)
godspeed1024 (2008-10-11 21:27:22)
查错那题没把握。
用与非门和与或门就是把逻辑函数改成全用与非的形式,遇到要用非门的地方就把两个输入端联在一起作非门用;
第4题a是检测是否有至少一个1,b是检测是否有至少两个1;
5没做;
6后来有人百度了,有答案,反正没做对
sarahwang (2008-10-12 12:47:02)
继续关注1
edacnuser (2008-10-12 13:07:03)
1 列出真值表
2 用卡诺图化简,得到逻辑表达式
3 用NAND或者NOR实现
rainameko (2008-10-12 14:01:15)
QUOTE:
不用列真值表吧不就是个类似于MUX嘛
直接就可以写出来了吧
xiog (2008-10-12 14:13:46)
clwyl (2008-10-12 16:05:37)
从new_A = eco_sel ? ( eco_mask & A ) : A 可以得出下面公式:
1)new_A = (eco_sel & ( eco_mask & A )) | ( ~eco_sel & A)
2) new_A = ((eco_sel & eco_mask) | ( ~eco_sel ) )& A
3) new_A = ( eco_mask | ( ~eco_sel ) )& A
4) new_A = ~ ( ~( eco_mask | (~eco_sel) ) | (~ A) )
5) new_A = ~ ( ~( eco_mask | (~(eco_sel | 1'b0)) ) | (~ (A | 1'b0)) )
从等式5可以知道new_A可以用4个2输入NOR逻辑门实现。
[ 本帖最后由 clwyl 于 2008-10-12 16:07 编辑 ]
godspeed1024 (2008-10-13 11:12:57)
QUOTE:
哎呀,没想到去化简,直接先改成全用与非表示的形式了,没得到最简式啊[ 本帖最后由 godspeed1024 于 2008-10-13 11:13 编辑 ]
zoneinter (2008-10-13 11:53:58)
QUOTE:
赞同这种,感觉更不容易错litholove (2008-10-13 12:31:18)
=~(~eco_sel|~eco_mask|~A)|~(eco_sel|~A)
=~(~(~(~eco_sel | ~eco_mask))|~A) | ~(eco_sel|~A)
最后将 ~x 替换成~(X| 0)
godspeed1024 (2008-10-13 12:52:38)
SequenceDetection_FSM_B.jpg
godspeed1024 (2008-10-13 12:55:03)
因为逻辑表达式的形式无非是“与-或”式或“或-与”式
godspeed1024 (2008-10-13 12:57:38)
QUOTE:
这个也是我当时的做法,不过这样就用了不止4个门了。还是没注意到一开始可以提出A化简wogan (2008-10-13 16:46:32)
QUOTE:
既然有逻辑表达式了,就不用列真值表,直接上卡诺图skywolftf (2008-10-14 10:30:28)
呵呵,不知道题目咋样?反正感觉除了那个C、Tcl以外的!其他还行!
wu.weihai (2008-10-14 23:40:19)
令X=A&(B|~C)= (A NOR 0) NOR ((B NOR 0) NOR C)
令X=A&(B|~C)= (A NAND B) NAND((C NAND 1) NAND A)
2:状态机列个表
0 1
0 S0 :S1 S0
00 S1 :S2 S0
000 S2 :S2 S4
011 S3 :S2 S3
001 S4 :S6 S3
011 S5: S6 S5
010 S6 :S5 S7
101 S7 :S1 S0
3:欢迎大家找茬
4: 已解答
遇到这样的题目大家可以用特殊值代入测试
因为是对称表达式另A[0]=1
表达式可以简化为Out=A[1] |A[2]&A[3]|A[4]&A[5]|A[6]&A[7]|A[2]|A[3]|(A[4]|A[5])&(A[6]|A[7])|(A[4]|A[5]|A[6]|A[7])
===> Out = A[1]|A[2]|A[3]|A[4]|A[5]|A[6]|A[7];
很显然这是这个表达式 啥意思自己看.
不需要搞那么复杂,毕竟面试时候不会给你那么多时间.
适当运用数学知识 事半功倍
5:经常写脚本的大侠应该很熟 排序么?用TCL还不会.
6:肯定不公平,A,B轮流取x/2 Dollar 这样才公平.就是不知道A,B俩人各有几只羊?
欢迎指正
[ 本帖最后由 wu.weihai 于 2008-10-15 09:10 编辑 ]
wu.weihai (2008-10-14 23:43:00)
t87829472 (2008-10-15 00:58:53)
robberpk (2008-10-15 21:57:33)
lausren (2008-10-18 11:39:44)
= (eco_sel&new_mask&A)|(~eco_sel&A)
= ((eco_sel&new_mask)|(~eco_sel))&A
= (new_mask|~eco_sel)&A
NOR实现,此时需要将&转化成用|来表示
&
X Y Z
0 0 0
0 1 0
1 0 0
1 1 1
|
X Y Z
0 0 0
0 1 1
1 0 1
1 1 1
===> A&B = ~(~A|~B)
====>new_A = ~((~(new_mask|~eco_sel))|(~A))
= ~((new_mask NOR (eco_sel NOR 0))|(A NOR 0))
= (new_mask NOR (eco_sel NOR 0)) NOR (A NOR 0)
nand来实现,此时需要将|转成用&来实现
=====>A|B = ~(~A&~B)
=====>new_A = A&new_mask | A&(~eco_sel)
= ~(~(A&new_mask) & ~(A&(~eco_sel)))
= ~((A nand new_mask) & ~(A & (eco_sel nand 1)))
= ~((A nand new_mask) & (A nand (eco_sel nand 1)))
= (A nand new_mask) nand (A nand (eco_sel nand 1))