verilog-设计可综合状态机指导原则课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《verilog-设计可综合状态机指导原则课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- verilog 设计 综合 状态机 指导 原则 课件
- 资源描述:
-
1、图图1.时钟同步的状态机结构时钟同步的状态机结构(Mealy 状态机状态机)下一状态下一状态的逻辑的逻辑 F F输出逻辑输出逻辑 G G状态状态寄存器寄存器 clk 输入Moor Moor 状态机状态机下一个状态下一个状态 =F(=F(当前状态,输入信号当前状态,输入信号)输出信号输出信号 =G(=G(当前状态当前状态);下一状下一状态的逻态的逻辑辑 F F输出逻辑输出逻辑 G G状态状态寄存器寄存器图2.时钟同步的状态机结构(Moor状态机)有限状态机的图形表示有限状态机的图形表示 图形表示:状态、转移、条件和逻辑开关图形表示:状态、转移、条件和逻辑开关图图3.4 3.4 状态转移图状态转移
2、图Idle Start Stop Clear A/K1=0!A A/K2=1!Reset/K2=0 K1=0!Reset/K2=0 K1=0(!Reset|!A)/K2=0 K1=1!Reset/K2=0 K1=01.定义模块名和输入输出端口;定义模块名和输入输出端口;2.定义输入、输出变量或寄存器;定义输入、输出变量或寄存器;3.定义时钟和复位信号;定义时钟和复位信号;4.定义状态变量和状态寄存器;定义状态变量和状态寄存器;5.用时钟沿触发的用时钟沿触发的always块表示状态转移过程;块表示状态转移过程;6.在复位信号有效时给状态寄存器赋初始值;在复位信号有效时给状态寄存器赋初始值;7.描
3、述状态的转换过程:符合条件,从一个状态到描述状态的转换过程:符合条件,从一个状态到另外一个状态,否则留在原状态;另外一个状态,否则留在原状态;8.验证状态转移的正确性,必须完整和全面。验证状态转移的正确性,必须完整和全面。ClockResetAK2K1input Clock,Reset A;output K2,K1;信号说明,引脚信号说明,引脚变量和常量变量和常量图图1.时钟同步的状态机结构时钟同步的状态机结构(Mealy 状态机状态机)下一状态下一状态的逻辑的逻辑 F F输出逻辑输出逻辑 G G状态状态寄存器寄存器 clk 输入信号变量、常量声明 每一个时钟沿产生一次可能的状态变化 stat
4、e 产生下一状态的组合逻辑 nextstate 产生输出K1的组合逻辑ResetAclkStopClear010010always20always30K10K20ClockResetAK2K1statemodule mux2(clk,ina,out);input clk,ina;output out;reg out;reg 1:0 state;parameter s0=2b00,s1=2b01,s2=2b10,s3=2b11;always (posedge clk)beginstate=s0;out=0;case(state)s0:begin state=(ina=1)?s1:s0;out=0
5、;ends1:begin state=(ina=1)?s2:s0;out=0;ends2:begin state=(ina=1)?s3:s0;out=0;ends3:begin state=(ina=1)?s3:s0;out=1;end endcaseendendmodule just_launchedis_landedabort_missionall_systems_goclklaunch_shuttleland_shuttlestart_countdownstart_trip_metercntjust_launchedis_landedabort_mission/launch_shuttl
6、e=1/land_shuttle=1/start_trip_meter=1HOLDSEQUENCELANDLAUNCHON_MISSIONcnt=0/start_countdown=1all_systems_gomodule statemachine(launch_shuttle,land_shuttle,start_countdown,start_trip_meter,clk,all_systems_go,just_launched,is_landed,cnt,abort_mission);output launch_shuttle,land_shuttle,start_countdown;
7、output start_trip_meter;input clk,just_launched,is_landed,abort_mission,all_systems_go;input 3:0 cnt;reg launch_shuttle,land_shuttle,start_countdown,start_trip_meter;/设置独热码状态的参数 parameter HOLD=5b00001,SEQUENCE=5b00010,LAUNCH=5b00100,ON_MISSION=5b01000,LAND=5b10000;reg 4:0 state;always(negedge clk or
8、 posedge abort_mission)begin /检查异步reset的值,即abort_mission的值 if(abort_mission)launch_shuttle,land_shuttle,start_trip_meter,start_countdown=4b0000;state=LAND;else begin/*主状态机,状态变量state*/case(state)HOLD:if(all_systems_go)begin state=SEQUENCE;start_countdown=1;end else state=HOLD;SEQUENCE:if(cnt=0)state=
9、LAUNCH;else state=SEQUENCE;LAUNCH:begin state=ON_MISSION;launch_shuttle=1;end ON_MISSION:/取消使命前,一直留在使命状态 if(just_launched)start_trip_meter=1;else state=ON_MISSION;LAND:if(is_landed)state=HOLD;else begin land_shuttle=1;state=LAND;end default:state=5bxxxxx;endcaseend end/end of alwaysendmoduleModule c
10、lk_3(clkin,reset,clkout);input clkin,reset;reg 1:0 state;reg clk1;always(posedge clkin or negedge reset)if(!reset)state=2b00;else case(state)2b00:state=2b01;2b01:state=2b11;2b11:state=2b00;default:state=2b00;endcasealways(negedge clk or negedge reset)if(!reset)clk1=1b0;elseclk1 y)begin tmp=x;x=y;y=t
11、mp;end endtaskendmodulemodule compare(equal,a,b);parameter size=1;output equal;input size-1:0 a,b;assign equal=(a=b)?1:0;endmodulemodule decoder(out,in);output 7:0 out;input 2:0 in;assign out=1b1in;/*把最低位的把最低位的1左移左移 in(根据从(根据从in口输入的值)口输入的值)位,并赋予位,并赋予out */endmodulemodule encoder1(none_on,out,in);out
展开阅读全文