您当前的位置:五五电子网电子知识单片机-工控设备DSP/FPGA技术总线控制逻辑的VHDL设计仿真与测试 正文
总线控制逻辑的VHDL设计仿真与测试

总线控制逻辑的VHDL设计仿真与测试

点击数:7616 次   录入时间:03-04 11:55:02   整理:http://www.55dianzi.com   DSP/FPGA技术

  计算机系统是由许多具有独立功能的模块互相连接而成的。随着计算机的不断发展和广泛应用,各生产厂商除了向用户提供整套系统外,还设计和提供各种功能的插件模块,让用户根据自己的需要构成自己的应用系统或扩充原有的系统。这些模块间需要互相通信,需要有高速、可靠的信息交换通道,这就是总线。总线使得计算机各模块之间的信号线可以直接互相连接,提高了信号传输的速度。

   VHDL (Very-High-Speed Integrated Circuit Hardware Description Language)是一种硬件描述语言,在电子设计领域得到广泛应用,最新版本为IEEE标准的1076-1993版,由IEEE在1993年公布。VHDL主要用于描述数字系统的结构、行为、功能和接口。本文用VHDL的有限状态机来描述和 仿真 计算机 总线控制 器的逻辑行为。

  1  总线在总线控制器的控制下工作

  在计算机系统各模块之间的信息通信过程中,每一时刻只能有一组信息在总线上传输。如果有多组信息要传输,只能在总线控制器的控制下,按顺序分别传输,这样对每一组信息的传输就形成一个传输周期,这个周期包括申请分配阶段、寻址阶段、数据交换阶段和撤消阶段。申请分配阶段由主模块提出总线使用申请,经总线控制器批准后获得总线使用权;之后主模块把从模块地址放置到地址总线上,即寻址阶段;从模块接收到地址后做好相应的通信准备工作,并与主模块建立通信,进行数据交换;数据交换结束后,主模块通知总线控制器,并交还总线使用权,即撤消阶段。常用的总线通信方式有同步通信方式和 异步通信 方式两种。

  2  同步通信方式的有限状态机描述和仿真

  在同步通信方式里,模块之间的通信传输周期是固定的。有精确稳定的系统时钟作为传输周期的“标尺”,通信双方严格按照时钟标尺进行各种操作,以主模块(如CPU)从从模块(如内存)读取数据为例,总线控制器框图如图1所示。

总线控制器框图

  这种方式下总线的控制状态转移图如图2所示。

这种方式下总线的控制状态转移图

  用VHDL进行描述并在MAX+PLUSII上进行仿真,结果如图3所示:

用VHDL进行描述并在MAX

  从图3可以看出,控制器一开始处于状态0(空闲状态),此时总线批准控制信号grant、片选信号csbar、地址有效信号effect和读控制信号rbar均处于无效的高电平;一旦有主模块发出总线请求,即request信号为低电平,控制器转移到状态1,总线批准控制信号有效,申请得到批准,这里假设主模块只有一个,即不存在多个主模块竞争使用总线的情况;进入状态2后,主模块发出地址,这里假设地址为“AD”,同时置片选信号csbar和地址有效信号effect为有效状态,从模块接收到地址有效信号和片选信号后,根据主模块发出的地址进行数据准备工作;进入状态3后,主模块发出读控制信号,即置rbar信号为有效状态;进入状态4后,假设从模块数据准备就绪,并发送到数据总线上,这里假设数据为“DA”,主模块读取数据;进入状态5后,主模块读数据完毕,发出撤消信号,即置withdraw信号为有效状态,之后返回状态0,所有控制信号都返回到无效状态;至此,一个数据传输周期结束。在传输过程中,各个模块的动作严格按照系统时钟同步进行。

  本设计下载到GW48—GK2/PK2 EDA实验开发系统,该系统目标芯片为EP1K100QC208-3,按照结构图No.0进行硬件测试,实验系统提供测试引脚的限制,只测试地址和数据均为4位(测试低4位)的情况,结果如图4所示。

结果图

  从图4中可以看出,在状态0,首先设置withdraw、request和rst为“1”,依次对应图中下方3个发光二极管,此时4个输出控制信号rbar、effect、csbar和grant为“1”,这4个信号按次序组成一个4位二进制数据,该数据经过译码器译码后由数码管显示输出结果,因4个信号均为“1”,故应该显示结果“F”,如图中上面的数码管显示“F”(右边第3个数码管)。第2步,按照图3所示时序设置rst和request信号并由按键3输入一个时钟脉冲,进入状态1,此时grant信号为“0”,4个输出控制信号组合为“1110”,可以看到图中数码管显示“E”,表明主模块申请总线被批准。第3步,设置地址信号addr1(低4位)为“1010”,即“A”,如图中数码管下方两个发光二极管所示,并输入一个时钟脉冲,进入状态2,该地址信号由addr2经译码器译码后由数码管显示出来,如图中上面最右边的数码管显示“A”,在该状态中地址有效信号effect和片选信号csbar均为“0”,此状态下主模块发出地址有效信号和片选信号,4个输出控制信号组合为“1000”,从图中可以看到数码管显示数字“8”。第4步,输入一个时钟脉冲进入状态3,该状态下主模块发出读控制信号,即置rbar信号为“0”,4个输出控制信号全部为“0”,如图中数码管显示“0”。第5步,设置数据信号get_data(低4位)为“1101”,即“D”,如图中数码管下方两个发光二极管所示,并输入一个时钟脉冲,进入状态4,该数据信号由data经译码器译码后由数码管显示出来,如图中上面右边第2个数码管显示“d”。第6步,输入一个时钟脉冲,进入状态5,主模块读取数据完毕,并发出撤消信号,1个数据传输周期结束;之后如果再输入一个时钟脉冲则回到状态0。

www.55dianzi.com

  3  异步通信 方式的有限状态机描述和 仿真

  为了使不同操作速度的模块之间能够进行速度匹配,顺利地进行通信,需要采用异步通信方式。这种方式不再要求主从模块的操作严格按照系统时钟进行。但是,为了主、从模块之间不同速度的配合,要有握手交互信号线(Handshaking),分别称为请求和响应。仍以主模块(如CPU)从从模块(如内存)读取数据为例,可以画出异步 总线控制 器框图和状态转移图,此处略,同样用 VHDL 描述并在MAX+PLUSII上仿真结果如图5所示:

用VHDL描述并在MAX

  从图5可以看出,控制器一开始处于状态0(空闲状态),此时总线批准控制信号grant和读控制信号rbar均处于无效的高电平;一旦有主模块发出总线请求,即request信号为低电平,控制器转移到状态1,总线批准控制信号有效,申请得到批准,这里仍然假设主模块只有一个;进入状态2后,主模块发出地址,这里假设地址为“AD”;进入状态3后,地址趋于稳定,主模块发出读控制信号,即置rbar信号为有效状态,从模块则根据地址进行数据准备工作;进入状态4后,假设从模块数据准备就绪,并发送到数据总线上,这里假设数据为“DA”,但还没有送出响应信号,主模块则处于等待状态,等待从模块的响应信号;进入状态5后,从模块发出响应信号,即置ack信号为有效状态,主模块收到该信号并读取数据;进入状态6后,读操作结束,主模块发出撤消信号,即置withdraw信号为有效状态,同时置读控制信号rbar为无效状态,通知从模块已读取数据,之后返回状态0,所有控制信号都返回到无效状态;至此,一个数据传输周期结束。

  从异步通信方式可以看到,主模块发出请求后,要一直等到从模块发出应答响应信号,才认为数据已送出。这段时间可以是不定的,从而解决了不同速度模块间的配合,不再按系统时钟标尺来进行操作。解决异步通信的关键是主模块按自己的速度送出请求信号,从模块按自己的速度发出响应信号,来掌握彼此匹配的速度。

  4  结束语

  本文用基于VHDL语言的有限状态机对计算机总线,包括同步总线和异步总线进行了描述和仿真。同步通信方式比较简洁,但受限于系统时钟,而异步通信方式比较灵活,但会增加控制信号线。

  本文介绍的计算机系统中总线控制器设计方法,在嵌入式片上系统及SOPC有借鉴作用。通过对文中介绍方法进行多主从模块扩展就可应用于较为复杂的系统中。

  本文作者创新点:用VHDL语言对总线控制器进行描述、仿真并进行硬件下载测试,为进一步在嵌入式片上系统构建复杂的系统(例如CPU等)打基础。

  参考文献

  1  徐炜民,严允中.计算机系统结构.北京:电子工业出版社,2003

  2  卢毅,赖杰.VHDL与数字电路设计.北京:科学出版社,2001

  3  陈耀和.VHDL语言设计技术.北京:电子工业出版社,2005

  4  李心广.多路计时系统设计[J],微计算机信息,2006,1:263-264




本文关键字:暂无联系方式DSP/FPGA技术单片机-工控设备 - DSP/FPGA技术