vhdl关于case的问题

在verilog中的程序case(init_state_r)I_NOP:init_state_r<=done_100us?I_PRE:I_NOP;--上电复位后200us... 在verilog中的程序
case(init_state_r)
I_NOP: init_state_r <= done_100us ? I_PRE:I_NOP;--上电复位后200us结束则进入下一状态
I_PRE: init_state_r <= (TRP_CLK == 0) ? I_AR1:I_TRP;--预充电状态
I_TRP: init_state_r <= (end_trp) ? I_AR1:I_TRP;--预充电等待TRP_CLK个时钟周期
I_AR1: init_state_r <= (TRFC_CLK == 0) ? I_AR2:I_TRF1;--第1次自刷新
I_TRF1:init_state_r <= (end_trfc) ? I_AR2:I_TRF1;--等待第1次自刷新结束,TRFC_CLK个时钟周期
I_AR2: init_state_r <= (TRFC_CLK == 0) ? I_AR3:I_TRF2; --第2次自刷新
I_TRF2:init_state_r <= (end_trfc) ? I_AR3:I_TRF2; --等待第2次自刷新结束,TRFC_CLK个时钟周期
I_AR3: init_state_r <= (TRFC_CLK == 0) ? I_AR4:I_TRF3; --第3次自刷新
I_TRF3:init_state_r <= (end_trfc) ? I_AR4:I_TRF3;--等待第3次自刷新结束,TRFC_CLK个时钟周期
I_AR4: init_state_r <= (TRFC_CLK == 0) ? I_AR5:I_TRF4; --第4次自刷新
I_TRF4:init_state_r <= (end_trfc) ? I_AR5:I_TRF4; --等待第4次自刷新结束,TRFC_CLK个时钟周期
I_AR5: init_state_r <= (TRFC_CLK == 0) ? I_AR6:I_TRF5; --第5次自刷新
I_TRF5:init_state_r <= (end_trfc) ? I_AR6:I_TRF5;--等待第5次自刷新结束,TRFC_CLK个时钟周期
I_AR6: init_state_r <= (TRFC_CLK == 0) ? I_AR7:I_TRF6; --第6次自刷新
I_TRF6:init_state_r <= (end_trfc) ? I_AR7:I_TRF6;--等待第6次自刷新结束,TRFC_CLK个时钟周期
I_AR7: init_state_r <= (TRFC_CLK == 0) ? I_AR8:I_TRF7; --第7次自刷新
I_TRF7: init_state_r <= (end_trfc) ? I_AR8:I_TRF7;--等待第7次自刷新结束,TRFC_CLK个时钟周期
I_AR8: init_state_r <= (TRFC_CLK == 0) ? I_MRS:I_TRF8;--第8次自刷新
I_TRF8:init_state_r <= (end_trfc) ? I_MRS:I_TRF8;--等待第8次自刷新结束,TRFC_CLK个时钟周期
I_MRS:init_state_r <= (TMRD_CLK == 0) ? I_DONE:I_TMRD;--模式寄存器设置(MRS)
I_TMRD:init_state_r <= (end_tmrd) ? I_DONE:I_TMRD;--等待模式寄存器设置完成,TMRD_CLK个时钟周期
I_DONE:init_state_r <= I_DONE;-- SDRAM的初始化设置完成标志
default: init_state_r <= I_NOP;
end case
想移植到VHDL中,可是VHDL没法用类似的多路选择器,例如init_state_r <= done_100us ? I_PRE:I_NOP。
难道要都写成if语句吗,求大神回答,积分不多了,就这些了
展开
 我来答
若以下回答无法解决问题,邀请你更新回答
warrrlock
2012-08-11 · 超过46用户采纳过TA的回答
知道小有建树答主
回答量:109
采纳率:0%
帮助的人:104万
展开全部
VHDL也有多路选择器啊,when...语句就可以啦。
追问
第一句改成
case init_state_r is
when I_NOP => init_state_r <= I_PRE when done_100us = '1'
<=I_NOP when done_100us = '0'
吗?这样这么多when编译能不能通过呀
追答
可以啊。为啥不行。你看看case when的语法,只要语法正确就能通过。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式