找回密码
 注册
关于网站域名变更的通知
查看: 290|回复: 5
打印 上一主题 下一主题

请问每当 dis_data有变化就产生一个 高脉冲该怎么写啊?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-8-5 11:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
, P  i% c! n0 O9 ]- _, x

' S) ]8 `1 M/ X! P3 p请问每当  dis_data有变化就产生一个 高脉冲该怎么写啊?感谢!
( T& c6 m" X9 P我知道我这个写的是不对的,只是做个示范( _* i2 ]+ }+ c' U8 m: m) f: i/ M+ {
always @(dis_data)
* _0 W/ W+ H. P3 s" Mbegin
5 `% I1 _' g1 M        start <= 1'b0;
, v8 T6 k" _$ l& j% j# i        start <= 1'b1;/ y/ o$ A  w# _+ ?0 ?0 P$ o, S
        start <= 1'b0;
! I; w( {7 l8 Q9 v1 i1 `0 vend$ m( t# z9 @0 R2 H2 D8 t  T

; [& V1 ]: q7 p# T5 |, Y1 m( h3 ~. A2 ]6 R1 ~
assign start = (dis data1 != dis_data)?1'b1:1'b0;这个也是不行的,因为脉冲宽度不可控。
  • TA的每日心情
    开心
    2019-11-20 15:05
  • 签到天数: 2 天

    [LV.1]初来乍到

    2#
    发表于 2019-8-5 15:49 | 只看该作者
    用不可优化的非门对dis_data延迟以下。然后把延迟后的同向信号与原来的信号异或下。如果脉冲宽度要大的话比较浪费资源。
  • TA的每日心情
    开心
    2019-11-19 15:19
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2019-8-5 15:49 | 只看该作者
    不明白想达到什么目的,也看不懂这些代码,
    ' s* ^& E; t. J3 x4 a. G) |有点莫名其妙。
    8 O- V( Q3 v/ K, K( d
    ; U7 A! K0 J2 c$ A$ Z(dis data1 != dis_data),这条件也能成立?
    " o+ x+ \7 A3 J

    该用户从未签到

    4#
    发表于 2019-8-5 15:49 | 只看该作者
    & J4 M2 q4 C8 m) |- t2 f
    楼主您要判别dis_data是否有变化,言下之意就是要判断接下来的dis_data的值与当前值是否不同,那肯定就是时序电路了,肯定要用到寄存器了。
    + p# G& M& \  _, `8 L7 n! `6 N可以将dis_data值用寄存器存一拍,然后输出与输入用一个异或进行判断即可。一个可能可行的代码:. D, R0 F9 A8 j9 |
    always@(posedge clk)
    # w# ]; y5 E( ]1 N9 b  dis_data_sav<=dis_data;
    4 A& A$ z* H0 \# Sassign judge=dis_data^dis_data_sav;6 ?2 h+ ?) z& f/ Q" b
    assign pulse=judge&(!clk); 9 K+ n7 V4 K8 c$ I/ _
    注意时钟要取的恰当,高脉冲宽度取决于时钟频率。不过可能不太可靠就是了,随手写的。。。。

    该用户从未签到

    5#
    发表于 2019-8-5 15:50 | 只看该作者

    * O; V9 w7 n5 p) x+ o" Q6 P/ F* I2 n* N! |& d5 `$ E1 O
    如果非要用组合逻辑那只能用偶数个非门打一下延迟后输出再与原信号异或一下了:
    5 L% j! p5 t$ n" F, q(*sythesis,keep*)wire not1,not2,not3,not4;6 {4 W7 J( B9 i, o+ I' G
    assign not1=~dis_data;2 d5 C7 ]8 C/ ?7 q6 m+ V
    assign not2=~not1;8 \' H# N8 Z6 W8 ~' r  K" f
    assign not3=~not2;9 @& P. s7 ^# m4 D. Q% a5 B9 X
    assign not4=~not3;* Y  I) q* f2 C# q5 T: ~
    assign pulse=dis_data^not4;/ r* |4 [. J. P5 x/ w6 P7 }' C
    脉冲宽度取决于非门个数和走线延迟,不过也只有几个ns。你输出的信号要是想要给后面的电路捕捉的话那会很不好使,而且宽度要大的话是会消耗大量资源的。所以是建议用个寄存器更好更灵活。# X8 \7 S: o! b; k$ n. V

    该用户从未签到

    6#
    发表于 2019-8-5 18:16 | 只看该作者
    A-Lin 发表于 2019-8-5 15:505 c( ]* u4 @8 H9 c, c
    如果非要用组合逻辑那只能用偶数个非门打一下延迟后输出再与原信号异或一下了:
    ; B* E1 g1 [" i; D; p) c/ X3 s3 r! s. f(*sythesis,keep*)wi ...

    : b# j, z! Q3 C# s: o
    ( e; E/ ?- |- T4 N8 z9 {% Z
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-8-13 20:13 , Processed in 0.109375 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表