占空比50%的5分频 记事 20110919

占空比50%5分频 记事 2011 09 19

       今天一师兄去华为面试FPGA设计工程师,面试官问了若干个问题,其中一个是让设计一个115分频器。然后师兄回到实验室跟我们讲了这件事,当时像许多人一样,第一反应是,做个5计数器,然后用时钟信号和计数器输出信号做一些组合输出即可。这道经典的数电题在考试考研的时候经常出现。某师弟说他们考数电时候就考了,貌似考研的时候也考过这道题,我没考过研,不太清楚,但是学数电的时候确实做过这道题,老师也是像上面那样讲的。然而,我还是有些疑惑,于是打算用Quartus试着编一下看看,程序比较简单,

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

 

ENTITY sig is

PORT(

       clk :IN STD_LOGIC;

       rst :IN STD_LOGIC;

       y1  :OUT STD_LOGIC;

        y :OUT STD_LOGIC

       );

END sig;

ARCHITECTURE  fpga OF sig IS

SIGNAL sum   : STD_LOGIC_VECTOR(2 DOWNTO 0);

BEGIN

    PROCESS(rst, clk)

    BEGIN

           IF (rst = '1') THEN

            sum <= "000";

        ELSIF(clk'event and clk = '1') THEN

            IF (sum ="100") THEN

                sum <="000";

            ELSE           

                sum <= sum + 1;

            END IF;

            END IF;

            y <=  (sum(2) and clk)or (sum(1)); 

END PROCESS;

END fpga ;

 

       然我们看看输出的波形吧,看了你就会一目了然



       对了,输出虽然是115分频,但是在波形的某个地方总是有毛刺!计数器的输出最高位sum2)和时钟clk与过以后就会出现这个毛刺!或上sum1)这个毛刺任然在那。很显然组合电路直接输出不可避免的会有毛刺存在,这种毛刺在系统中会引起引灾难性的后果,但是这个毛刺能去除吗?不能,最少我认为在只有clk的情况下不能,原因很显然,要想去除毛刺就得用寄存器打一下,但是寄存器一打的话前面组合电路的努力就白费了,占空比又会变成3:2

       到现在我还只想到了这里,也许有办法能正的去掉毛刺,那么请各位高手不吝赐教。

       我想华为的面试题还是有一定深度的,不会随随便便出一个考试题给人去做,就像昨天某师兄去面试某软件职位结果被问到了c语言中sizeof(指针)是多少这个问题一样(应该和机器的字长和编译器都有关吧),都暗藏陷阱。师兄们一个个都找到了自己理想的工作,真想自己也和他们一样,早点走出去啊。

转载于:https://www.cnblogs.com/HIT-Young/archive/2011/09/20/2181965.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值