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

cpld/fpga RTL和门级Modelsim仿真不一致问题

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
module PWM( clk,//系统时钟
% E4 y* v. u& e- `( Irst_n,//复位7 y1 \, o, w  G
cs,//DSP片选
  h# P7 t* t; Y7 S4 i& lfault_and_out,//故障5 C1 x  D' p/ p+ Y3 g/ t) |
overcurrent,//过流,逐波限流
: J0 r+ U8 q( D; xePWM_sync,//同步,即EPWM时基起始计时点5 }- B( i- N" ]7 ^/ ~1 G
pwm1,pwm2,pwm3,pwm4,//PWM输入 pwm1_out,pwm2_out,pwm3_out,pwm4_out//PWM输出
$ u. `3 L; D4 @* R5 d* k);- o5 l! l  J# c( _
input clk;//系统时钟 30M
. |& g8 L( b5 ainput rst_n;//复位 低电平有效
* N0 U. C+ X( E& z( @, _input cs,fault_and_out,ePWM_sync;//同步 片选 严重故障信号
3 B8 Y' |6 _$ s! k+ m; vinput overcurrent;//过流  G5 _% w6 y" E, l$ c2 X
input pwm1,pwm2,pwm3,pwm4;//PWM输入
% H: W9 y6 ]8 T" q- D7 @6 noutput pwm1_out,pwm2_out,pwm3_out,pwm4_out;//PWM输出$ A+ T" z* @, l' ^0 X, N
reg pwm1_out,pwm2_out,pwm3_out,pwm4_out;  c* h0 V9 o8 n3 n8 t( M; I. W$ S
. S! f% B9 d( w" F% J" z
parameter CLOSE_ALL=4'b0001,//关闭4个管子 独热键编码状态机7 A6 a/ K1 t* u1 `" Y: V
CLOSE_OUTSIDE=4'b0010,//关闭外侧2个管子; i1 z( V# n  I& A7 s: K% p
//SET_INSIDE=6'b000100,//内侧2个管子强制导通全置1,1字型备用+ }/ _+ ]% N: Y5 U3 X/ ~$ F
OPEN_INSIDE=4'b0100,//打开内侧2个管子! G5 I1 i: W( {! f, a) T5 ~3 z4 w, O
OPEN_ALL=4'b1000;//打开内外侧4个管子,正常工作状态
5 Q) G5 Z" x( `4 O( hreg[3:0] state;//状态机
% [6 T" ~  [& @/ A5 Q( e  Kreg[5:0] cnt_close;$ Q/ l! R$ t! z& i+ ?
reg[5:0] cnt_open;
$ Z! [5 @0 P9 i. ~$ f* r! _( y//reg[5:0] cnt_set; //1字型备用
  n% f9 h, O$ N7 z9 t/ S# O# T# |; S, ealways @(posedge clk or negedge rst_n )//
; h; M2 ]0 D- A& [begin! L+ }" `- Q+ K2 [6 y) ~
if(!rst_n) //复位5 T* j! H7 Q. @3 ]. A9 x. A
begin: _' h& z' \% U5 ~& _9 P. c% a( I
{pwm1_out,pwm2_out,pwm3_out,pwm4_out}<=4'd0;//关闭管子& x& E1 H9 @6 f7 d. _* o" R5 t; B
cnt_close<=6'd0;
- b- j! @; I9 c  k1 ?, \! S4 A  Ycnt_open<=6'd0;% z( s$ l$ Q/ M2 q
state<=CLOSE_ALL;
) c# \+ z9 N- E. ]/ n  V# Zend, l1 S: u* a" ^- d6 n
else
( f& V, H( }' g2 N# Hbegin2 Z8 M% r& V/ V: k
case(state)
  t' S7 J9 [9 p* XCLOSE_ALL:
* v$ q9 t  s& l* f$ Bbegin
" D- H; G, _# {$ V+ p0 X8 ?* u$ z{pwm1_out,pwm2_out,pwm3_out,pwm4_out}<=4'd0;//初始化状态,关闭管子% ?6 [# f' |, ~! G5 E
if(!cs && fault_and_out && overcurrent && ePWM_sync) state<=OPEN_INSIDE;//等待片选选中且无故障进入下一状态
3 }/ n2 K6 [0 ~, f$ T4 Uend
4 M. R8 h' I6 B6 d- COPEN_INSIDE://打开内侧2个管子
" I0 @$ n( m9 E! V$ ?" sbegin
5 o% e' W, S7 d0 l( S% J{pwm2_out,pwm3_out}<={pwm2,pwm3};//打开内侧2个管子2us
. h( s0 C/ ~- k/ s{pwm1_out,pwm4_out}<=2'b00;//关闭外侧2个管子/ ?# K' g: z# m9 y% {) p
cnt_open<=cnt_open+1'b1;+ P* S5 G7 S9 x4 _4 ~$ l+ n
if(cnt_open==6'd63) state<=OPEN_ALL;
+ n' S2 o" ]- g2 K( ^4 N+ Q  `end: ~7 L* S7 T2 y. {  c0 A. n* l% j
OPEN_ALL://打开外侧2个管子,4个管子全部开放0 [$ o* h' J. {5 x) v! K
begin5 k! B' Q4 |- x7 k
{pwm1_out,pwm2_out,pwm3_out,pwm4_out}<={pwm1,pwm2,pwm3,pwm4};
* v7 U$ V$ y/ M, O. S: F, pif(cs || !fault_and_out || !overcurrent) state<=CLOSE_OUTSIDE;//故障,关闭管子# l5 T4 C! I9 a4 d  ]% k( c
end
; ?) U. ?' ^' ~CLOSE_OUTSIDE://关闭外侧2个管子4 Y) ~: J+ Q' F; o* }: i* z0 g+ O
begin3 P! F& u/ A$ i
{pwm2_out,pwm3_out}<={pwm2,pwm3};//内侧2个管子保持# m# G, H5 C7 n
{pwm1_out,pwm4_out}<=2'd0;//关闭外侧2个管子2US& L+ L7 c- w% I1 V
cnt_close<=cnt_close+1'b1;) R) s4 [" @. }1 ?) a- A/ [
if(cnt_close==6'd63) state<=CLOSE_ALL;
5 p' G  V4 ?5 @end( V8 Q  s3 _( C6 j
/*SET_INSIDE://1字型备用
, s+ C0 @6 ^( p, @7 ybegin( N5 W" w- f1 ?$ U/ U6 y
{pwm2_out,pwm3_out}<=2'b11;//内侧2个管子强制导通2us,Q1和Q4结电容充电至E/2: _% R, X# s# P
{pwm1_out,pwm4_out}<=2'd0;//关闭外侧2个管子
, A7 n) A/ Z( V  Icnt_set<=cnt_set+1'b1;
6 s, s: F. p6 H2 q. ?# m5 X% uif(cnt_set==6'd63) state<=OPEN_INSIDE;
& N( ?# m/ n; F; _end*/5 L! T6 _% J) f* T; Q
default:state<=CLOSE_ALL;
! B, U6 ]: h. N( nendcase: X& G0 Z/ V, j# r1 l
end& e6 X4 }. w$ \8 B" i4 V3 s
end2 S3 R% d3 g; H3 D% F* f! [" N2 _
$ K: v4 D8 ^9 t( L- {6 z( ^) w' E
endmodule
' K9 J% F" }3 D/ W
8 z# [3 R5 }: A6 w+ x$ V+ G) m仿真时使用的是modelsim-altera,RTL仿真正确,门级仿真看波形以及通过调试发现程序总是停留的OPEN_INSIDE状态,我琢磨好久甚是不透,这里OPEN_INSIDE状态程序不可能有竞争冒险的% X; K) {$ E: X$ Q- x

该用户从未签到

2#
发表于 2022-7-11 17:03 | 只看该作者
你的问题是个典型的case所包含的项没写完整
: s% O  S) R7 p& W+ M3 Y- _cnt_open和cnt_close在case在其他状态不会被reset,直接就死了! o# r% F/ P& \

该用户从未签到

3#
发表于 2022-7-11 17:28 | 只看该作者
再看看别人是怎么说的  t: h3 w$ R. Z
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-6 17:15 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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