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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
module PWM( clk,//系统时钟
1 ^7 _4 D$ N: d8 O. Drst_n,//复位
1 w% E  V; p; X! f$ [- l0 Xcs,//DSP片选
- \0 l6 I! C' e( `& Jfault_and_out,//故障
" M% r- E6 r: }) \" o8 [overcurrent,//过流,逐波限流" }5 |4 L2 h' c
ePWM_sync,//同步,即EPWM时基起始计时点' @' Q5 ?# k& O  M, O# I
pwm1,pwm2,pwm3,pwm4,//PWM输入 pwm1_out,pwm2_out,pwm3_out,pwm4_out//PWM输出
& s7 {! m8 W$ n3 G9 m5 ~);
5 E+ i) j8 j  C4 U: T6 Oinput clk;//系统时钟 30M
1 X3 T, z4 z4 u3 B  N* q& \input rst_n;//复位 低电平有效
4 n# X: \3 W6 g4 z6 ]1 g0 E4 minput cs,fault_and_out,ePWM_sync;//同步 片选 严重故障信号
0 B) U2 x+ v2 K- Iinput overcurrent;//过流
7 N& v2 v7 ?) hinput pwm1,pwm2,pwm3,pwm4;//PWM输入$ s/ z  b/ S3 j
output pwm1_out,pwm2_out,pwm3_out,pwm4_out;//PWM输出* K' m  h% X+ w' r8 p$ Z7 Y
reg pwm1_out,pwm2_out,pwm3_out,pwm4_out;
( z7 W7 N; M8 E4 _( [& ]: I6 R, v6 B& t, r2 |) ?2 L7 ^5 I- |2 c
parameter CLOSE_ALL=4'b0001,//关闭4个管子 独热键编码状态机
$ X( C5 n' l* \" \CLOSE_OUTSIDE=4'b0010,//关闭外侧2个管子
- n$ ~( Q* t0 G  C2 {//SET_INSIDE=6'b000100,//内侧2个管子强制导通全置1,1字型备用
5 ~$ v! J8 M: JOPEN_INSIDE=4'b0100,//打开内侧2个管子
% }' K' @+ j3 I* P4 A- IOPEN_ALL=4'b1000;//打开内外侧4个管子,正常工作状态# _/ \; n: X2 N. f6 }; G
reg[3:0] state;//状态机  Y9 E! r) A% N3 k+ E8 j) P
reg[5:0] cnt_close;  }& @/ Q. m( X  Q! W, Z$ s
reg[5:0] cnt_open;
" ^6 h# W: `9 N; \; {//reg[5:0] cnt_set; //1字型备用
0 w9 }4 D$ y+ c+ s0 Nalways @(posedge clk or negedge rst_n )//- C  u9 N9 Q+ G  o
begin$ h$ T. a) @: d9 H
if(!rst_n) //复位* V! A  Q) e' ~" k
begin
  K( A7 L! Q# J$ A{pwm1_out,pwm2_out,pwm3_out,pwm4_out}<=4'd0;//关闭管子; j  M; _, I1 J# L3 l+ t; r0 J6 C
cnt_close<=6'd0;+ ~5 R' C3 M( u$ P
cnt_open<=6'd0;+ D' m: ?% d' d1 e( P: R) ^
state<=CLOSE_ALL;
( y- f2 Q$ ^+ C' v& Cend
8 l. H0 {( j+ oelse! ?  Q/ \" j, m9 _4 `0 b: z
begin
8 O6 W1 ~6 c% P9 s, D4 D) s) j6 ocase(state), m" c6 P0 c! A4 f/ _
CLOSE_ALL:
& t  d& u3 y$ Z" bbegin
( @% M8 t) F5 x1 ]+ |$ R{pwm1_out,pwm2_out,pwm3_out,pwm4_out}<=4'd0;//初始化状态,关闭管子0 v( ~9 J8 r  y* z4 T
if(!cs && fault_and_out && overcurrent && ePWM_sync) state<=OPEN_INSIDE;//等待片选选中且无故障进入下一状态) U4 Q8 d! `$ Q4 I" H- L) m( L
end
* o' c* N1 [  m/ x% S# D& ?OPEN_INSIDE://打开内侧2个管子6 ]* D3 R. H  A7 X) y) E: T( T
begin' H  @$ `$ X: L6 I  U: n
{pwm2_out,pwm3_out}<={pwm2,pwm3};//打开内侧2个管子2us0 G$ }  l  d2 {' o, ?1 r* R0 }2 p
{pwm1_out,pwm4_out}<=2'b00;//关闭外侧2个管子
- v+ o& ]7 f5 E, M' w- v' z8 scnt_open<=cnt_open+1'b1;
4 Y9 J& p+ z. o/ A8 xif(cnt_open==6'd63) state<=OPEN_ALL;  f- q6 {2 q, ]! d8 w' o/ G
end, w# ]+ S5 {, b' J" j
OPEN_ALL://打开外侧2个管子,4个管子全部开放
2 @* W) ]5 }! ~9 N& O' g% r( ~begin* u3 g: X$ ?- l! N+ W+ o% @
{pwm1_out,pwm2_out,pwm3_out,pwm4_out}<={pwm1,pwm2,pwm3,pwm4};  z, ^1 G, {. ]3 F) {; H; G
if(cs || !fault_and_out || !overcurrent) state<=CLOSE_OUTSIDE;//故障,关闭管子
  q* T% j/ G* oend8 T1 J) a) U% I. d4 {" K+ f* @; {
CLOSE_OUTSIDE://关闭外侧2个管子! l4 U7 P6 g) w. N0 `- v
begin9 U% H) v+ ]) Z8 c
{pwm2_out,pwm3_out}<={pwm2,pwm3};//内侧2个管子保持! t) @) |. {0 a6 l
{pwm1_out,pwm4_out}<=2'd0;//关闭外侧2个管子2US
" e" G4 U4 j' \cnt_close<=cnt_close+1'b1;
% j5 |# v1 K; @# G. `' Jif(cnt_close==6'd63) state<=CLOSE_ALL;
, R5 _/ s1 D* }$ ^9 k- d5 k( Wend1 y4 m  m5 Q) W1 j% z, s( F
/*SET_INSIDE://1字型备用) {( X. H4 m$ s# Y5 _* Q
begin
" w! {- v9 I& f& p{pwm2_out,pwm3_out}<=2'b11;//内侧2个管子强制导通2us,Q1和Q4结电容充电至E/2
/ ?# G: M/ O2 Y1 ^( F2 t{pwm1_out,pwm4_out}<=2'd0;//关闭外侧2个管子5 w7 o8 j7 G8 T
cnt_set<=cnt_set+1'b1;
' {4 N' P& C; d, P$ h' Oif(cnt_set==6'd63) state<=OPEN_INSIDE;
2 f& u4 T# `1 Z* D# _2 gend*/
* O9 v' _0 }  O, Sdefault:state<=CLOSE_ALL;1 Y( s+ \0 ^4 G& o# H5 C7 [' L+ A. b
endcase
7 Y5 ~" `5 Q5 Pend
5 w% n4 M# _+ o" k$ Dend$ _8 [# o) ^1 O! f* t, K

6 @$ g5 g8 J9 l* sendmodule
. u7 B  F/ l6 L+ t  E  R6 z7 p3 p' ?) _- o2 L& c& M
仿真时使用的是modelsim-altera,RTL仿真正确,门级仿真看波形以及通过调试发现程序总是停留的OPEN_INSIDE状态,我琢磨好久甚是不透,这里OPEN_INSIDE状态程序不可能有竞争冒险的
% m9 q! W( M& M: `

该用户从未签到

2#
发表于 2022-7-11 17:03 | 只看该作者
你的问题是个典型的case所包含的项没写完整
/ S' o0 u6 \7 P$ ^cnt_open和cnt_close在case在其他状态不会被reset,直接就死了" D+ h# c: P: c% [4 z

该用户从未签到

3#
发表于 2022-7-11 17:28 | 只看该作者
再看看别人是怎么说的
, l7 a  ], }$ U" D( \" b
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-24 07:14 , Processed in 0.109375 second(s), 24 queries , Gzip On.

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

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

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