[转论坛的帖子]发个今天的面试题,拿出来和大家探讨

上一篇 / 下一篇  2008-08-11 16:08:16 / 个人分类:IC/EDA


一个黑匣子,输入一位,输出一位,还有clk输入,设计黑匣子里面的电路:
输入的数字序列能被5整除的话,输出1,不能被5整除,输出0,比如输入0101,输出就是1001。
大家把思路说出来就行,不用写代码了。
 
a simple state machine with five states.
whatever mod by 5, there are five results, 0,1,2,3,4..based on these five results, you can easily draw a state machine diagram.
BTW: assuming it's a infinite width shift register and MSB first...
 
 
 
Looks like most people don't understand the problem. It's not a practical problem, just a conceptual problem!!

A small example:

current input bit         current input sequence          current output bit             current output sequence
1                                                    1                                                 0                                                   0
0                                                    10                                               0                                                   00
1                                                    101                                             1                                                   001
0                                                    1010                                           1                                                   0011
1                                                    10101                                        0                                                   00110
1                                                    101011                                      0                                                   001100
1                                                    1010111                                    0                                                   0011000
......                                                 ......                                              ............                                         .............
 
 
 
回答上面一些朋友的问题:

1.确实输入的是无穷序列;
2.最后考我这个问题的考官好像确实是在考察我的arithmetic方面的知识,问的问题都是一些和数学还有算法相关的,比如如何用硬件实现递归的算法等等;
3.不能认同状态机不重要的观点。状态机还是在设计中经常用到的,如何最有效地实现状态机是一个挺有挑战的问题。这就好像算法和编程之间的关系一样。
 
 
写个答案吧,看看能不能写清楚:
首先一些基本事实:输入一位就是右移一位,如果输入数为0那么就是乘2,如果输入数为1就是乘2加1。
假设原数我们设为M,那么输入为0就是2M,输入1就是2M+1。
任何数字都能表示成 5i+r 的形式 i取正整数,r取0,1,2,3,4。那么M=5i+r
考虑输入数字mod5的情况:如果是0就是2*(5i+r) mod 5=(5i+r) mod 5,如是1就是(2*(5i+r)+1) mod 5 = (5i+ (2r+1))mod 5.
前面2#已经说了,除以5得到的余数可能答案只有{0,1,2,3,4}那么这就是状态机的状态。只有当0状态的时候输出为1,所以下面分析就不说输出是什么了:
首先从0开始,0状态表示现在的输入数字是0,在输入0的时候就是0x2 mod 5=0,那么0状态,输入是0的时候,还是停留0状态; 输入是1就是 (0+1) mod 5=1,跳转状态1;
1状态, 输入0,   1*2 mod 5 = 2, 输入1,   (1*2+1) mod 5= 3;
2状态....
3状态....
4状态....
状态图完成。
 

这个题目有意思.

在纸上"状态机"了一把. 发现是在计算如下2个算式:
0,1,2,3,4   这5个数字乘以2后的模5余数
0,1,2,3,4   这5个数字乘以2加1后的模5余数


FPGA/CPLD器件价格查询

TAG:

引用 删除 lausren   /   2008-10-28 19:01:10
很受启发,谢谢
引用 删除 godspeed1024   /   2008-08-29 16:28:20
3
sublucky的个人空间 引用 删除 sublucky   /   2008-08-17 13:08:28
3
我的一平方毫米 引用 删除 frozen_king   /   2008-08-16 16:22:19
如果数字是存储在有限位中,高位会被移出,考虑怎么做。其实就是又多一个输入。
引用 删除 FULLLIFE   /   2008-08-15 17:22:48
原来面试还有这种题目,长见识了。
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-11-20  
      1
2345678
9101112131415
16171819202122
23242526272829
30      

数据统计

  • 访问量: 1731
  • 日志数: 10
  • 建立时间: 2007-11-09
  • 更新时间: 2008-08-11

RSS订阅

Open Toolbar