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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: rosshardware

[原创] 数字典型电路知识结构地图,请大家参考,也希望积极补充!

[复制链接]
 楼主| 发表于 2018-11-5 11:34:12 | 显示全部楼层
上面讲了,我们逻辑可以通过基本的与或非组成复杂逻辑,所以统称为组合逻辑,组合逻辑有个特点就是输出及时响应输入,没有历史状态的效应,比如一个与门,其实时序关系如下所示:

          out = in0 & in1;
                            ______             ________
  in0        _______|          |______|
                                       _______________
  in1        _____________|
                                                     _______
out        _____________________|  

当然,这是一个比较理想的时序关系图,实际我们物理电路器件与器件之间走线长度并不等长,可能存在延时差异 比如下图所示:
                           _____
         -------------|         \
                          |          ) --in0_out-----------|                           
           ----------- |____ /                              |
                                                                   |                 _____
                                                                   |-------in0--|         \
                                                                                    |          ) -------out                        
                                                                  |--------in1--|____ /
                                                                  |
                                                                  |
                           _____                              |
         -------------|         \                             |
                          |          ) -in1_out-----------|
          ------------ |____ /
            
            假如 in0_out 到in0 的延时是5ps, in1_out到in1的延时是3ps,则时序图如下所示:
                                  ______             ________
  in0_out         ______|          |______|
                                             _______________
  in1_out         ____________|
                                     ______             ________
  in0                 _______|          |______|
                                               _______________
  in1                _____________|
                                              _             ________
  out               _____________| |______|
                                            毛刺

可以看出,由于路径延时差异,会导致门电路输入相位关系并不能保证理想状态的同时跳转,因为存在竞争行为,最后结果,我们叫做冒险,通俗讲就是会产生毛刺,所以为了滤出毛刺给系统带来的不确定性,在组合逻辑基础上,我们引入时序逻辑电路,在下一章节给大家介绍。
发表于 2018-11-6 15:38:10 | 显示全部楼层
回复 91# rosshardware


   多谢分享,每天持续关注
发表于 2018-11-7 09:28:35 | 显示全部楼层
回复 6# rosshardware


   你好,你在文中提到的 sysnopsys 推荐写法 这些写法你是从哪里找到的呀?有没有相关的资料可以提供一下?
发表于 2018-11-7 09:51:21 | 显示全部楼层
回复 11# rosshardware

你好,关于乘法的实现,直接用       always@(*) begin
              prdct = a * b;
        end
实现。这种方式会不会带来时序问题啊?因为用IP例化的时候,比如在Quartus中是可以选择需要几个clock cycle的output latency,进行打流水操作的,这样子的时序会更好点吧?
发表于 2018-11-7 10:07:41 | 显示全部楼层
回复 17# rosshardware

always @(*) begin
          sub_dividend_divsor = {1'b0,divivend_cut } - {1'b0, divisor};
    end

    always @(posedge clk_sys or negedge rst_sys_n) begin
          if (rst_sys_n == 1'b0) begin
                lsf_dividend <= {LSF_REG_WIDTH{1'b0}};
          end
          else if ((div_strt == 1'b1) || (div_clr == 1'b1))begin
                lsf_dividend <= {{DIVISOR_WIDTH{1‘b0}},dividend};
          end
          else if (div_cnt_en == 1'b1) begin
                if (sub_dividend_divsor[DIVISOR_WIDTH+1] == 1'b1 ) begin
                      lsf_dividend <= {lsf_dividend[LSF_REG_WIDTH-2:0],1'b0};
                end
                else begin
                     lsf_dividend <= {sub_dividend_divsor[DIVISOR_WIDTH-2:0],
                                              lsf_dividend[LSF_REG_WIDTH-DIVIDEND_WIDTH-1:0],1'b0};

                end
          end
    end
楼主想问一下,第一处标红的地方,是否存在结果为负数的情况。
第二处标红的地方是否是表示sub_dividend_divsor为负,但是sub_dividend_divosr只有9bit,你的条件中的sub_dividend_divisor[9](第十位)是否是表示符号位。
第三处标红的地方,好像位宽没对上24bit,{sub_dividend_divisor[6:0](7bit),lsf_dividend[24-16-1:0](8bit),1'b0},一共只有7+8+1 = 16bit
 楼主| 发表于 2018-11-7 10:18:31 | 显示全部楼层
回复 93# zchdsp

就在这个论坛上都有哈,给你一个链接
http://bbs.eetop.cn/thread-560537-1-1.html
发表于 2018-11-7 11:28:23 | 显示全部楼层
回复 28# rosshardware


   有符号数相加的运算,如果采用手动扩位的方式进行加法运算,好像在定义变量的时候,不用声明signed了吧?
发表于 2018-11-7 11:29:24 | 显示全部楼层
回复 96# rosshardware


   多谢啦,下载下来看看,学习一下
发表于 2018-11-7 11:33:10 | 显示全部楼层
回复 29# rosshardware


   比较两个有符号数,比如 reg signed [4:0] a; reg signed [4:0] b;  直接用if(a>b)就可以吧?我平时这么用,好像也没出过问题啊。你可以箱子说明一下为什么一定要有符号数先转换成无符号数,在进行比较大小吗?
 楼主| 发表于 2018-11-7 14:20:01 | 显示全部楼层
回复 97# zchdsp


    是的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-23 17:01 , Processed in 0.021017 second(s), 9 queries , Gzip On, Redis On.

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