1、 根据设计对象的操作控制步来确定有限状态机的状态。取初始状态为s0,第一种模式共有14种状态循环,因而可取状态s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13;第二种模式有八种状态,可共用第一种模式中的前八种状态,即为s0,s1,s2,s3,s4,s5,s6,s7。根据题目要求的循环可以写出各个状态的下一状态,写完整个循环为止。切换按钮可以用一个If来总领。单点移动模式:幕布式:流程图:彩灯电路设计语言:library ieee;use ieee.std_logic_1164.all;entity pmd isport( a,cp:in std_log
2、ic; %输入信号 deng: out std_logic_vector(7 downto 0) %输出灯信号 );end pmd;architecture arch of pmd is type all_state is (s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13);%枚举状态机状态 signal state:all_state; %状态转换符号begin %开始程序 process(cp)beginif (cpevent and cp=1)then %时钟信号开始计数if(a=)then %单点循环模式 case state is when
3、 s0= state=s1;deng=s2;00000010 when s2=s3;00000100 when s3=s4;00001000 when s4=s5;00010000 when s5=s6;00100000 when s6=s7;01000000 when s7=s8;10000000 when s8=s9; when s9=s10; when s10=s11; when s11=s12; when s12=s13; when s13=s0; when others =state00000000 end case;Else %切换为幕布式000110000011110001111
4、11011111111end if;end process;end arch;输入波形:添加五十分频后的仿真程序:entity cd is a,clk: q: out std_logic_vector(7 downto 0)end cd;architecture a of cd issignal cnt : integer range 0 to 24999999; %50分频状态 signal clk_tmp : std_logic; begin process(clk) Begin %开始运行分频信号 if (clkevent and clk=) then if cnt=24999999 t
5、hen cnt=0; clk_tmp= not clk_tmp; else=cnt+1; end if; end if;if (clk_tmpevent and clk_tmp=)then %分频后运行彩灯程序)thenqelseend a;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all; process(clk)if (clk故障及问题分析:1编写这个程序时,很自然地想到用一个输入信号控制两种模式的切换,但把这个输入放在哪里,如何放,开始出现了几种想法。先是用when来引出a=0&a=1两种模式,结果出现了错误,后改用
6、 ifif来总领,感觉太罗嗦,但可行,最后定为ifelse,这样比较清晰的表达了分组的目的,取得了较好的效果。2在确定有限状态机的状态个数时,一开始只是用了8个状态,第一种工作模式循环出现了混乱(虽然第一种模式只有8种状态),古尔改采用14个状态表示,第二种模式共用第一种模式的前八种状态,虽然看上去比较罗嗦,但这样使得整个程序运行比较顺畅,看起来也相对比较明了。3在验收虽然本程序得到了通过,但是state描述两个或多个状态时可能会发生锁存器错误,产生记忆效应,因而可以将state改命名为state_1和state_2,这样看起来就不会混乱了。总结和结论: 数字电路与逻辑设计实验这门课总共虽然只
7、有四次课堂实验,但是我还是学到了很多东西。 第一次和第二次实验都是实验板的接线。第一次是集成门电路电压参数的测量,让我熟悉了TTL电路和COMS电路的使用规则,掌握了集成门电路的电路外特性参数的测量方法及其物理意义,并熟悉了实验板的结构和使用方法,为下面的实验打好了基础。第二次是组合逻辑电路冒险的研究和消除,在第一次实验的经验基础上可以较顺利地完成此次实验,这次试验将课本中学关于冒险的理论充分应用到实际中的,让我们清楚地看到了冒险并尝试找到了一些解决冒险的方法,为理论到实践搭建了桥梁。第三、四次试验都是基于一款在电路中应用十分广泛也是十分重要的软件quartusII的 实验。通过第三次试验熟悉了用quartusII原理图输入法进行电路设计和仿真,熟悉了电路板是使用。第四次实验是用quartusII文本输入法进行电路设计和仿真,用到了VHDL语言设计组合逻辑电路,让我学习了一种新的设计语言,为以后从事电路设计方面的工作打了个基础,并让我体会到VHDL语言的强大。 通过数字电路与逻辑设计实验这门课程的学习,我进一步加深了对数字电路理论课程的理解,并自己动手了解到一些逻辑器件的使用。通过quartusII软件的使用,懂得了逻辑图的画法,并编写VHDL语言进一步解了各个端口的关系。这次试验课开阔了我的眼界,加强了我动手能力,相信这些为我以后的在电路方面的学习和工作都提供了莫大的帮助。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1