完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
`初学Quartus 2不久。根据这个原理图来写程序,单进程和双进程的。我写的程序似乎有错,可是不知道错在哪里,改了好多天了,仿真还是有错啊~还是搞不掂。唯有向各位请教了。帮我看看我的程序哪里有错,怎么改,谢谢了! ` |
|
相关推荐
5个回答
|
|
单进程的case语句有错,将WHEN至END IF中的ST换成NST,既次态!
|
|
|
|
至于双进程的吗,请参考以下程序(我们课本上的)
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY s_machine IS PORT ( clk,reset : IN STD_LOGIC; state_inputs : IN STD_LOGIC_VECTOR (0 TO 1); comb_outputs : OUT INTEGER RANGE 0 TO 15 ); END s_machine; ARCHITECTURE behv OF s_machine IS TYPE FSM_ST IS (s0, s1, s2, s3); --数据类型定义,状态符号化 SIGNAL current_state, next_state: FSM_ST;--将现态和次态定义为新的数据类型 BEGIN REG: PROCESS (reset,clk) --主控时序进程 BEGIN IF reset = '1' THEN current_state <= s0;--检测异步复位信号 ELSIF clk='1' AND clk'EVENT THEN current_state <= next_state; END IF; END PROCESS; COM:PROCESS(current_state, state_Inputs) --主控组合进程 BEGIN CASE current_state IS WHEN s0 => comb_outputs<= 5; IF state_inputs = "00" THEN next_state<=s0; ELSE next_state<=s1; END IF; WHEN s1 => comb_outputs<= 8; IF state_inputs = "00" THEN next_state<=s1; ELSE next_state<=s2; END IF; WHEN s2 => comb_outputs<= 12; IF state_inputs = "11" THEN next_state <= s0; ELSE next_state <= s3; END IF; WHEN s3 => comb_outputs <= 14; IF state_inputs = "11" THEN next_state <= s3; ELSE next_state <= s0; END IF; END case; END PROCESS; END behv; |
|
|
|
还有在仿真时,设置的时针频率有合适,太高了不行!
|
|
|
|
还是不行啊。似乎怎样改状态图都有问题,可是仿真却是没问题的! |
|
|
|
为什么输入是“00”和“11”的?我在编译的时候改成其他的就状态图就不正确了... |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
4849 浏览 3 评论
6138 浏览 1 评论
6406 浏览 0 评论
Protues中自己封装的芯片元件无Program File、Clock Frequency选项怎么解决,求求大神了!
8154 浏览 1 评论
基于51单片机的车辆倒车雷达报警系统,HC-SR04超声波测距,全套资料
1236 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-30 01:12 , Processed in 0.651957 second(s), Total 83, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号