南昌大学eda实验报告(4)

2019-05-26 17:44

三、序列信号发生和检测器设计

(一) 实验目的

1、 进一步熟悉EDA实验装置和QuartusⅡ软件的使用方法; 2、

3、

(二) 设计要求

完成设计、仿真、调试、下载、硬件测试等环节,在EDA实验装置上实现一个串行序列信号发生器和一个序列信号检测器的功能,具体要求如下:

其最后6BIT数据用LED1、 先用设计011101101100100100序列信号发生器,

显示出来;

2、 再设计一个序列信号检测器,检测上述序列信号,若检测到串行序列“110110”则输出为“1”,否则输出为“0”;

(三) 主要仪器设备 1、微机 1台 2、QuartusII集成开发软件 1套 3、EDA实验装置 1套

(四) 实验思路

首先画出状态转移图

学习有限状态机法进行数字系统设计; 学习使用原理图输入法进行设计。

总体程序如下

module xulieji2(clk,rst,en,date,SOUT);

parameter s0=1,s1=2,s2=3,s3=4,s4=5,s5=6,s6=7; input clk,rst,en; output date,SOUT; wire SOUT; reg[8:0] cnt; reg[6:0] ST,NST; reg[5:0] date; reg[16:0] sdate;

assign SOUT=(NST==s6);

always @ ( posedge clk or negedge rst ) begin if(!rst) begin ST<=s0; date<=6'b000000; sdate<=17'b011101101100100100; cnt<=16;end else if(en) begin ST<=NST; date[5:1]<=date[4:0]; date[0]<=sdate[cnt]; cnt<=cnt-1;;end else cnt<=0; case(ST) s0: begin if(date[0]==1'b1) NST<=s1;else NST<=s0;end s1: begin if(date[0]==1'b1) NST<=s2;else NST<=s0;end s2: begin if(date[0]==1'b0) NST<=s3;else NST<=s2;end s3: begin if(date[0]==1'b1) NST<=s4;else NST<=s0;end s4: begin if(date[0]==1'b1) NST<=s5;else NST<=s0;end s5: begin if(date[0]==1'b0) NST<=s6;else NST<=s2;end s6: begin if(date[0]==1'b0) NST<=s0;else NST<=s4;end default: NST<=s0; endcase end endmodule

这里用到了状态机技术,状态机可以方便的设置程序满足什么条件然后

去往什么状态,利用状态机可以实现检测到110110时的状态,同时可以在不满足时准确的调往正确的状态以便于下一步的判断。

状态机简写为FSM(Finite State Machine),主要分为2大类:第一类,若输出只和状态有关而与输入无关,则称为Moore状态机;第二类,输出不仅和状态有关而且和输入有关系,则称为Mealy状态机。要特别注意的是,因为Mealy状态机和输入有关,输出会受到输入的干扰,所以可能会产生毛刺(Glitch)现象,

使用时应当注意。事实上现在市面上有很多EDA工具可以很方便的将状态图的描述转换成可以综合的程序代码。

状态机可归纳为4个要素,即现态、条件、动作、次态。这样的归纳,主要是出于对状态机的内在因果关系的考虑。“现态”和“条件”是因,“动作”和“次态”是果。详解如下:

①现态:是指当前所处的状态。 ②条件:又称为“事件”,当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移。

③动作:条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。

④次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。 赋值模块

parameter s0=1,s1=2,s2=3,s3=4,s4=5,s5=6,s6=7; input clk,rst,en; output date,SOUT; wire SOUT; reg[8:0] cnt; reg[6:0] ST,NST; reg[5:0] date; reg[16:0] sdate;

assign SOUT=(NST==s6);

s1到s6为状态机的不同状态,clk为控制序列输入的信号,rst为清零信号,en为使能信号,SOUT为检测到序列110110时的输出信号1,cnt为控制哪一位数据进行检测的数,ST和NST为状态机现在的状态和下一时刻将要到来的状态,

当检测到状态为s6时,通过assign date为检测到的6为数据,sdate为输入序列,

SOUT=(NST==s6)可以让SOUT输出为1. 输入序列模块

always @ ( posedge clk or negedge rst ) begin if(!rst) begin ST<=s0; date<=6'b000000; sdate<=17'b011101101100100100; cnt<=16;end else if(en) begin ST<=NST; date[5:1]<=date[4:0]; date[0]<=sdate[cnt]; cnt<=cnt-1;;end else cnt<=0;

Clk为序列输入信号,rst为清零信号,rst为低电平时将初始状态设为s0,初始6位待检测数据为000000,17位输入序列为011101101100100100,先从最高位从

左往右输入,所以cnt开始时为16。en为使能信号,当en为1时可以将下一状态NST赋予现在状态ST,同时将序列进行移位,待检测信号进行输入,同时cnt减1指向下一数据。如果en为0,则保持现在的状态不进行工作。 状态转移模块 case(ST) s0: begin if(date[0]==1'b1) NST<=s1;else NST<=s0;end s1: begin if(date[0]==1'b1) NST<=s2;else NST<=s0;end s2: begin if(date[0]==1'b0) NST<=s3;else NST<=s2;end s3: begin if(date[0]==1'b1) NST<=s4;else NST<=s0;end s4: begin if(date[0]==1'b1) NST<=s5;else NST<=s0;end s5: begin if(date[0]==1'b0) NST<=s6;else NST<=s2;end s6: begin if(date[0]==1'b0) NST<=s0;else NST<=s4;end default: NST<=s0; endcase end Endmodule

通过这个状态转移语句可以正确的实现检测到110110便可使状态到达s6,即便序列为110110110时也是可以的,原理附状态转移图。 (五) 时序仿真

可以清楚的看出,当检测到110110序列时sout便为1,即便是连续的110110110也可以检测出来,证明了这个程序的正确性。 (六) 实验总结

要求画出状态转移图,我把书上的状态机部分仔细阅读,参考了书上的程序编写了这个程序,一开始检查的时候不符合要求,后来检查是状态转移图弄错了,修改之后进行仿真,便得到了正确的结果。状态机在EDA的程序设计中应用广泛。经过这次实验深刻掌握了状态机技术和状态转移图的画法,进一步激发了我对eda的兴趣。

四、 交通灯控制器设计

(一) 实验目的 1、 2、

学习与日常生活相关且较复杂数字系统设计;

进一步熟悉EDA实验装置和QuartusⅡ软件的使用方法;

3、 学习二进制码到BCD码的转换; (二) 设计要求

完成设计、仿真、调试、下载、硬件测试等环节,在型EDA实验装置上实现一个由一条主干道和一条乡间公路的汇合点形成的十字交叉路口的交通灯控制器功能,具体要求如下:

、MY(主黄)、MG(主绿)、CR(乡红)、CY(乡黄)、1、 有MR(主红)

CG(乡绿)六盏交通灯需要控制; 2、

交通灯由绿转红前有4秒亮黄灯的间隔时间,由红转绿没有间隔时间;

3、 乡间公路右侧各埋有一个串连传感器,当有车辆准备通过乡间公路时,发出请求信号S=1,其余时间S=0;

4、 平时系统停留在主干道通行(MGCR)状态,一旦S信号有效,经主道黄灯4秒(MYCR)状态后转入乡间公路通行(MRCG)状态,但要保证主干道通行大于一分钟后才能转换;

5、 一旦S信号消失,系统脱离MRCG状态,即经乡道黄灯4秒(MRCY)状态进入MGCR状态,即使S信号一直有效,MRCG状态也不得长于20秒钟; 6、 控制对象除红绿灯之外,还包括分别在主干道和乡间公路各有一个两位十进制倒计时数码管显示。 (三) 主要仪器设备 1、微机 1台 2、QuartusII集成开发软件 1套 3、EDA实验装置 1套 (四) 实验思路 总体程序如下

程序大体分为S=1与S=0的情况,不同情况对应不同处理方法,每一次COUNTER均为0时根据S的1和0来改变数码管的计数的灯的情况,具体原理在注释中有。 module jiaotong (S,clk,LED,COUNTER,LED1,sel); input clk;

reg CPB; //时钟 input S;

output [2:0] sel;

reg [2:0] sel; //指明乡村路口是否有汽车的通行信号 reg [3:0]a;

output [5:0] LED; //信号灯的显示 output [7:0] LED1; //显示时间的十位 output [8:0] COUNTER; //数码的显示 reg [5:0] LED;

reg [7:0] COUNTER; reg [7:0] LED1;


南昌大学eda实验报告(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:土壤微生物的分离鉴定

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: