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

求助:关于实现类似双边沿单稳态电路的办法,使用的是xilinx的ZYNQ7010。

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
7 _- X( p1 ?2 N

2 @8 ^( w$ t' Y6 Q8 v
! C9 V" |4 f# ?$ X4 Y
. P* h, e) C/ {4 |4 G
1

" s" h& S6 }, J1 J8 ?6 k/ F# p/ u1、问题:使用xilinx的ZYNQ7010的PL部分实现类似双边沿单稳态触发电路
1 F3 B$ M1 e/ ?& }7 }已知输入信号频率在7.9KHz~8KHz之间波动,波形为方波。当上升沿到来时跳变为高电平,在下降沿到来前降为低电平。当下降沿到来时跳变为高电平,在上升沿到来前降为低电平。
$ Q, O& k" E" f4 l) R波形类似9 k! M# i1 X# M1 k: y* `/ H

7 ]  w# Q. Y- H- d" e2、要求! ]  L+ h& r  l
输出的脉宽要求大致为输入信号的一半,但并不严格要求。
; u9 N% `# [9 \* j: O/ R要求输出信号的上升沿与输入信号的上升沿与下降沿严格对齐
  K6 Q) U/ Y" ^5 ?  g! q* lFPGA上是新手,试了好多次没成功所以前来提问。希望大佬可以回答。: I) m7 |8 i$ [& S: L
3、尝试做法

8 C( c( Y  q) {0 A5 \* u/ F2 ^    reg[10:0] timer_cntp;//计数器1* T, l$ s8 O7 E, O; e
    reg[10:0] timer_cntn;//计数器2- \& g3 h. `8 [
    reg flagp;//判断上边沿  ; ]/ W2 ]$ K$ P- I' o" c
    reg flagn;//判断下降沿
& F; o/ R$ ?1 ~$ B# h" _    wire flag;
& `0 E1 R! l6 [  s1 d    always@(posedge sys_crs or posedge sys_clk)//同步信号上升沿,sys_crs为输入信号,sys_clk为时钟3 K- o# P; a  t' _
    begin
+ l; n! `  Q: Q& B% i! V    IF (sys_crs): b2 b6 E# R$ i6 {# _4 ^( B
        begin
5 J3 z4 |, ]& {7 Q3 s, y% {% @! g        flagp <= 'b1;//标志位' u. z; V! O) F1 F3 m, i
        timer_cntp <= 11'd0 ;//计时开始
9 b) O% l7 N/ ?$ }2 X        end
; f. m3 W& ~' ]( @' T" H2 ~    else if(timer_cntp >= 11'd1562&flagp==1'b1) //(1/8000/4)*50000000=1562.50 V6 Y3 |$ J7 Y. H
         begin+ ]3 e# a7 A, I. L8 e% K& q( ^; s
           flagp <= 'b0;//下个同步信号边沿前回复5 I% {$ F3 O( `0 o7 `& J
           timer_cntp <= 11'd0 ;
: T7 K- s0 |- h4 s         end
7 G3 s3 r% H  o' y5 b3 z    else
) |! n1 ?8 s7 p# u        begin( O0 {2 a: [. a! B7 q: t
           timer_cntp <= timer_cntp + 11'd1;' v1 t- D& i- _3 I1 ~$ K7 d
        end; c( [. }) x( M3 \$ ^/ ]
    end   & ?( o. ~% |' p! I7 J( c& g
   
' }( f3 o" J0 `+ O, `    always@(negedge sys_crs or posedge sys_clk)//同步信号下降沿
; E! o4 E$ l0 m7 b$ i7 \    begin
, X+ ]5 t, r6 [; |6 i    if (!sys_crs)
& X+ h% [* h( \: w3 d        begin
$ c0 h$ d0 [" E# N1 e        flagn <= 'b1;//标志位
( D) L% O$ u; ?$ {& u. v        timer_cntn <= 11'd0 ;//计时开始% A' |' g" K6 B( J  ~: `
        end! b. Y1 P# O1 w3 s% a- ~: S: t$ e
    else if(timer_cntn >= 11'd1562&flagn==1'b1) //(1/8000/4)*50000000=1562.5
4 x) h% n, j0 F& a- {         begin
3 O- D1 H! X- V  Z$ s9 Z           flagn <= 'b0;//下个同步信号边沿前回复, @2 y7 \$ p* y- o
           timer_cntn <= 11'd0 ;
: u2 l. o- U+ M  L2 O; z         end1 [% L2 R2 x/ V0 e- K
    else
0 q9 t* X" X+ b5 @0 o( ]        begin9 @1 s% V" a( X8 s" L9 m
           timer_cntn <= timer_cntn + 11'd1;
) k8 N: g. p, N5 q        end
1 P3 s0 R% f7 `    end  
2 C9 ]% E' d9 A" X  m- \+ T3 Q0 L% i    assign flag=flagn|flagp;
8 Z1 @1 a  |5 `3 o! h. o7 k- y   4、失败原因分析
) h9 r$ \4 ?: `& _0 w# C8 h- a" d( d一直在执行 if (!sys_crs)和if (sys_crs)) c) h/ g2 ]% i( i2 m
5、fpga上是新手,试了好多次没成功所以前来提问。希望大佬可以回答,解决这个双边沿单稳态触发电路的问题。     
$ I4 ]5 E6 u9 F! j! K/ h# t
/ Q( o2 I* Y# a9 ~9 T( K+ k# D

. u& p$ X: _% y  L( ]. h
9 [* ~; c3 Q' S

% F2 }) d7 |8 M6 Q

该用户从未签到

2#
发表于 2020-5-6 13:37 | 只看该作者
01.错误" x, w+ V) R! x% J# _9 ~$ }& a
程序错误细节没看,主要是你的编码风格不太规范。

该用户从未签到

3#
发表于 2020-5-6 13:39 | 只看该作者
一般在always语句中采用时序控制,并且赋值采用非阻塞方式赋值(<=);而你的用法是在always语句中引入了事件控制(posedge sys_crs)。

该用户从未签到

4#
发表于 2020-5-6 13:41 | 只看该作者
假如在always语句中引入事件控制,一般用作组合逻辑,并且赋值采用阻塞方式赋值(=),例如always@(a,b,c or d)或者always@(*)。

该用户从未签到

5#
发表于 2020-5-6 13:47 | 只看该作者
当上升沿到来时跳变为高电平,在下降沿到来前降为低电平。

该用户从未签到

6#
发表于 2020-5-6 13:49 | 只看该作者
可以用你的方式编码,但是更要加强逻辑状态的控制。

该用户从未签到

7#
发表于 2020-5-6 13:56 | 只看该作者
源码及仿真波形如下,输出波形的占空比我设置了百分之50和百分之八十,仿真时间1ms。5 Q3 L3 R9 d7 R" w' ~- r
注释部分的代码,是另一种实现方式,可以替代它上面的对应代码。具体怎么学习就看你自己了。

该用户从未签到

8#
发表于 2020-5-7 19:03 | 只看该作者
当上升沿到来时跳变为高电平,在下降沿到来前降为低电平。当下降沿到来时跳变为高电平,在上升沿到来前降为低电平。

该用户从未签到

9#
发表于 2020-5-11 16:08 | 只看该作者
输出的脉宽要求大致为输入信号的一半,但并不严格要求。

该用户从未签到

10#
发表于 2020-5-11 16:30 | 只看该作者
当上升沿到来时跳变为高电平,在下降沿到来前降为低电平。当下降沿到来时跳变为高电平,在上升沿到来前降为低电平。

该用户从未签到

11#
发表于 2020-5-12 15:11 | 只看该作者
不太擅长双边沿单稳态触发电路的问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-21 07:40 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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