《微型计算机接口技术课件》第13章 FPGA设计基础_第1页
《微型计算机接口技术课件》第13章 FPGA设计基础_第2页
《微型计算机接口技术课件》第13章 FPGA设计基础_第3页
《微型计算机接口技术课件》第13章 FPGA设计基础_第4页
《微型计算机接口技术课件》第13章 FPGA设计基础_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、? ?微型计算机接口技术课微型计算机接口技术课件件? ?第第1313章章 FPGAFPGA设计根设计根底底 13.1 接口电路实现的技术趋势接口电路实现的技术趋势 传统接口设计:专用接口芯片传统接口设计:专用接口芯片8251,8255, USB,PCI等等现在接口设计:现在接口设计:FPGA基于基于FPGA接口设计的优点接口设计的优点2021-10-11计算机接口技术2灵活性大通用性强功耗低、速度快、集成度高 13.2 FPGA设计根底设计根底 13.2.1 FPGA的工作原理的工作原理FPGA利用一种称为查找表利用一种称为查找表LUT的结构的结构实现反复烧写实现反复烧写用户通过原理图或用户通

2、过原理图或HDL语言描述逻辑电路语言描述逻辑电路,FPGA会自动计算逻辑电路的结果,把结果会自动计算逻辑电路的结果,把结果存入存入LUT中。中。输入逻辑信号时就相当于输入一个地址在输入逻辑信号时就相当于输入一个地址在LUT中查找,找出结果。中查找,找出结果。2021-10-11计算机接口技术34 输入输入“与门的实例与门的实例2021-10-11计算机接口技术4图13.1 输入 “与门实例 对图的几点说明对图的几点说明LUTLUT的值存入的值存入SRAMSRAM中或中或FlashFlash中。中。利用地址作为索引,在利用地址作为索引,在LUTLUT中查找值。中查找值。完成的功能与实际电路等价,

3、具有更快的执行速度、更大完成的功能与实际电路等价,具有更快的执行速度、更大的规模。的规模。XilinxXilinx和和AlteraAltera公司的公司的FPGAFPGA是基于是基于SRAMSRAM的,掉电后内部逻的,掉电后内部逻辑消失,用户需要添加一个外存储器来存储程序。辑消失,用户需要添加一个外存储器来存储程序。2021-10-11计算机接口技术513.2.2 FPGA的设计流程的设计流程FPGA的设计流程如下图。的设计流程如下图。2021-10-11计算机接口技术6电路功能设计电路功能设计设计输入设计输入功能仿真功能仿真综合优化综合优化综合后仿真综合后仿真实现与布线实现与布线时序仿真时序

4、仿真板级仿真板级仿真芯片编程与调芯片编程与调试试图13.2 FPGA的设计流程13.2.3 FPGA的开发工具的开发工具Xilinx的的ISE: ISE是是Xilinx公司的公司的FPGA/CPLD综合综合集成设计平台,界面友好,操作简单。集成设计平台,界面友好,操作简单。ISE提供了包提供了包括代码编写、库管理、括代码编写、库管理、HDL综合、仿真、下载等几乎综合、仿真、下载等几乎所有所有FPGA开发所需的工具。开发所需的工具。 Xilinx的的Vivado: Vivado是全新的另一个是全新的另一个Xilinx FPGA开发工具,是为高端开发工具,是为高端FPGA专门开发的一款开发专门开发

5、的一款开发工具工具。2021-10-11计算机接口技术7ViVado相比相比ISE,有着显著的进步,主要表现在,有着显著的进步,主要表现在以下几方面。以下几方面。2021-10-11计算机接口技术8强调以IP为中心的系统设计思想。允许设计者在多个方案中探索最优的实现方法。提供了更高效的时序收敛能力。提供设计者对FPGA时序、布局布线的高效控制能力。提供了高级综合工具Vivado HIS,用户可以用高级语言对FPGA建模。13.3 采用采用Verilog HDL进行电路设计进行电路设计13.1 HDL 简介简介HDL语言用文本形式来描述电子系统硬件电路语言用文本形式来描述电子系统硬件电路的行为、

6、结构、数据流,数字电路的设计者可的行为、结构、数据流,数字电路的设计者可以从顶层到底层描述自己的设计思想以从顶层到底层描述自己的设计思想。主要特征:主要特征:2021-10-11计算机接口技术9兼具一些高级语言的结构形式和硬件线路的具体结构。HDL语言是并行处理的。使用结构级行为描述,可以在不同的抽象层次描述设计。具有时序的概念。学习学习HDL时需要注意的地方时需要注意的地方2021-10-11计算机接口技术10了解HDL的可综合性问题。用硬件电路设计思想来编写HDL。语法掌握贵在精,不在多。13.3.2 VHDL与与Verilog HDL的比较的比较相同点相同点2021-10-11计算机接口

7、技术11都能形式化的抽象表示电路的行为和结构。支持逻辑设计中层次与范围的描述。可以简化电路行为的描述。具有电路仿真与验证机制。 便于管理和设计重用。2021-10-11计算机接口技术12与VHDL相比,Verilog HDL最大的优势在于它非常容易掌握,只要有C语言的编程根底,就很快能够掌握;VHDL不是很直观,需要有Ada 的编程根底,一般需要半年以上的专业培训才能掌握。一般认为Verilog HDL在系统级抽象方面比VHDL略差些;在门级开关电路描述方面Verilog HDL要强的多。 VHDL适合特大型的系统设计;Verilog HDL较为适合系统级、算法级、存放器传输级、逻辑级、门级和

8、开关级的电路设计。不同点不同点基于基于HDL的电路设计方法的电路设计方法传统上使用自底向上的设计方法,即:器传统上使用自底向上的设计方法,即:器件选择件选择模块设计模块设计模块间综合模块间综合系统仿真系统仿真。这样只有在后期才能发现系统设计的问题。这样只有在后期才能发现系统设计的问题,导致修改麻烦。,导致修改麻烦。利用利用HDL进行电路设计采用自顶向下的设进行电路设计采用自顶向下的设计方法,对系统不断划分成小模块,直到可计方法,对系统不断划分成小模块,直到可用用EDA元件实现为止。利用硬件描述语言对元件实现为止。利用硬件描述语言对设计的模块进行描述和定义,结合多层仿真设计的模块进行描述和定义,

9、结合多层仿真技术,在确保设计可行性的条件下完成系统技术,在确保设计可行性的条件下完成系统的设计。的设计。 这种设计方法的好处是在每一层都进行仿这种设计方法的好处是在每一层都进行仿真,能够及时发现设计错误,减轻设计本钱真,能够及时发现设计错误,减轻设计本钱。2021-10-11计算机接口技术1313.3.4 Verilog HDL的模块结构的模块结构例例13.1 二路选择器的二路选择器的Verilog实现,如下图实现,如下图。2021-10-11计算机接口技术14as1bout图13.3 二路选择器13.3.4 Verilog HDL的模块结构的模块结构模块和说明模块和说明2021-10-11计

10、算机接口技术15module mux21out,a,b,s1 input a,b,s1; output out; reg out; always(s1 or a or b) if(!s1) out=a; else out=b;endmodule输入端口输入端口:a,b,s1a,b,s1,默认,默认1 1位,位,wirewire数据类型;数据类型;输出端口输出端口:outout,默认,默认1 1位,位,regreg数据类型;数据类型;模块定义包括模块定义包括:端口定义、:端口定义、IOIO说明、内部信号说明和功能说明、内部信号说明和功能定义。定义。13.3.5 Verilog HDL语言的描述方

11、法语言的描述方法结构化描述是通过元件实例进行描述的方法,结构化描述是通过元件实例进行描述的方法,就像在电路图输入方式下调入库元件一样,键入就像在电路图输入方式下调入库元件一样,键入元件的名称和相连的引脚即可。元件的名称和相连的引脚即可。例化语句:使得一个模块能够在另外一个模块例化语句:使得一个模块能够在另外一个模块中被引用。其格式是:中被引用。其格式是: 模块名模块名 实例名端口关联;实例名端口关联;端口关联端口关联:指明了模块和外部端口信号指明了模块和外部端口信号,模块和模块和模块之间的连接。其格式是:模块之间的连接。其格式是:连接信号名连接信号名/通过位置通过位置.端口名连接信号名端口名连

12、接信号名/通过名称通过名称2021-10-11计算机接口技术16例例 三路选择器的例化设计三路选择器的例化设计三路选择器如图三路选择器如图13.4所示。所示。2021-10-11计算机接口技术17a ab bs1s1outabs1outU1U2 ya2a3s0s1a1tmp图13.4 三路选择器模块定义和说明模块定义和说明2021-10-11计算机接口技术18module mux31y,a1,a2,a3,s0,s1 input a1, a2,a3,s0,s1; output y; reg y; wire tmp; mux21 U1(tmp,a2,a3,s0); mux21 U2(.out(y)

13、,.a(a1), .b(tmp),.s1(s1) ); endmodule实例化实例化U1U1采用的是位采用的是位置关联。置关联。实例化实例化U2U2采用的是名采用的是名称关联称关联。13.3.5 Verilog HDL语言的描述方法语言的描述方法数据流描述形式数据流描述形式就是用就是用assign连续赋值语句描述电路或系统连续赋值语句描述电路或系统中信号的传递关系。中信号的传递关系。assign语句是并行语句。语句是并行语句。连续赋值语句将值赋给线网。连续赋值语句将值赋给线网。格式格式:assign LHS_target = RHS_expression右边的值受监控,一有变化就重新计算,结

14、果值有变右边的值受监控,一有变化就重新计算,结果值有变化,就赋给左边。化,就赋给左边。例如例如 :wire 3:0 Z, Preset, Clear; assign Z = Preset & Clear, 在在没有定义时延的情况下右边的值立即赋给左边。没有定义时延的情况下右边的值立即赋给左边。2021-10-11计算机接口技术19数据流描述形式数据流描述形式显式定义时延的例子显式定义时延的例子例如:例如:assign #6 Ask = Quiet Late; 表示计算结果后经过表示计算结果后经过6个时间单位之后进行赋个时间单位之后进行赋值。值。如下图,时刻如下图,时刻5 Late发生变化,时刻

15、发生变化,时刻11赋值给赋值给Ask。2021-10-11计算机接口技术20图13.5 连续赋值语句中的时延定义时延的语法定义时延的语法可以定义三类时延值可以定义三类时延值:上升时延,下降时延,关闭上升时延,下降时延,关闭时延。语法如下:时延。语法如下:如何灵活利用时延如何灵活利用时延2021-10-11计算机接口技术21assign # (rise, fall, turn-off) LHS_target = RHS_expression;assign #4 Ask = Quiet | Late;assign # (4,8) Ask = Quick;assign # (4,8,6) Arb =

16、 & DataBus;assign Bus = MemAddr 7:4;例例 3-8译码器的电路设计译码器的电路设计3-8译码器的代码模块如下:译码器的代码模块如下:2021-10-11计算机接口技术22module decoder3x8(a,b,c,en,z); input a,b,c,en; output 0:7 z; wire nota,notb,notc; assign #1 nota = a; assign #1 notb = b; assign #1 notc = c; assign #2 z0 = nota & notb & notc & en; assign #2 z1 = a

17、 & notb & notc & en; assign #2 z2 = nota & b & notc & en; assign #2 z3 = a & b & notc & en; assign #2 z4 = nota & notb & c & en; assign #2 z5 = a & notb & c & en; assign #2 z6 = nota & b & c & en; assign #2 z7 = a & b & c & en;endmodule 行为描述形式行为描述形式就是使用initial和always语句来设计行为建模。initial语句:只执行一次,在时刻0开始执

18、行,假设有两个initial语句,那么在时刻0并行执行。initial语句的格式:2021-10-11计算机接口技术23initial begin/fork 块内变量说明 时序控制1行为语句1; 时序控制2行为语句2; 时序控制n行为语句n;/可以是时延控制或事件控制end/join例例 带有顺序过程的带有顺序过程的initial语句语句例子程序和运行时例子程序和运行时port_A值的变化情况如图值的变化情况如图13.6所示。所示。2021-10-11计算机接口技术24parameter APPLY_DELAY = 5;reg0:7port_A;. . .initial begin Port_

19、A =h20; #APPLY_DELAY Port_A= hF2; #APPLY_DELAY Port_A= h41; #APPLY_DELAY Port_A= h0A;end图13.6 使用initial语句产生的波形always语句可以循环执行语句可以循环执行格式格式几点说明几点说明2021-10-11计算机接口技术25 always 敏感事件列表 begin/fork 块内变量说明 时序控制1行为语句1; 时序控制2行为语句2; 时序控制n行为语句n;end/join1.1. 敏感事件是可选项,目的是为了触发敏感事件是可选项,目的是为了触发alwaysalways语句的执行。语句的执行。

20、2. 2. 敏感事件表由一个或多个事件表达式构成。敏感事件表由一个或多个事件表达式构成。3. 3. 过程语句、时延控制与过程语句、时延控制与initialinitial语句大致相同。语句大致相同。4. always4. always过程块主要对硬件功能行为进行描述,可实现锁存器和过程块主要对硬件功能行为进行描述,可实现锁存器和触发器,也可用来实现组合逻辑。触发器,也可用来实现组合逻辑。例例 initial initial和和alwaysalways语句的综合使用语句的综合使用2021-10-11计算机接口技术26 module TestXorBehavior; reg Sa, Sb, Zeus

21、 ; initial begin Sa = 0; Sb = 0; #5 Sb = 1; #5 Sa = 1; #5 Sb = 0; end always (Sa or Sb) Zeus = Sa Sb ; always (Zeus) $display (At time %t, Sa = %d, Sb = %d, Zeus = %b, $time, Sa, Sb, Zeus)endmodule 时序控制时序控制延迟控制:通过表达式定义开始遇到这条语句延迟控制:通过表达式定义开始遇到这条语句和真正执行这条语句之间的延迟时间。和真正执行这条语句之间的延迟时间。事件控制:通过表达式定义开始遇到这条语句

22、和真正执行事件控制:通过表达式定义开始遇到这条语句和真正执行这条语句之间的延迟时间。这条语句之间的延迟时间。边沿触发事件控制:指信号的边沿跳变时发生指定的行为边沿触发事件控制:指信号的边沿跳变时发生指定的行为。有上升沿控制。有上升沿控制posedge描述和下降沿控制描述和下降沿控制negedge描述。描述。2021-10-11计算机接口技术27语句间时延:语句间时延:Sum=(AB)Cin;#4 T1=A&Cin; /即第一条语句执行后四个时间单位执行第二条语句。语句内时延:语句内时延:Sum=#3 (AB)Cin; /计算好右边值得等3个时间单位后赋值给左边。例例13.6 边沿触发事件计数器

23、边沿触发事件计数器n如果clk信号上有上升沿,那么cnt信号就会加1,实现计数功能。n边沿触发事件控制,指信号的电平发生变化使发生指定的行为。2021-10-11计算机接口技术28reg4:0 cnt; always (posedge clk) begin if(reset) cnt=0; else cnt=cnt+1; end例例13.7 电平触发计数器电平触发计数器只要只要a a、b b、c c信号的电平有变化,信号的电平有变化,cntcnt的值就会加的值就会加1 1。2021-10-11计算机接口技术29reg4:0 cnt; always (a or b or c) begin if(

24、reset) cnt=0; else cnt=cnt+1; end13.4 并行接口并行接口8255A的的FPGA设计设计13.4.1 模块划分模块划分用自顶向下的设计方法,从芯片结构入手,将要设计的用自顶向下的设计方法,从芯片结构入手,将要设计的芯片分成几个子模块,逐一设计调试。各个模块相互独芯片分成几个子模块,逐一设计调试。各个模块相互独立,利于错误定位和修改。立,利于错误定位和修改。2021-10-11计算机接口技术30外围逻辑8位数据传输控制模块IOB1位数据传输控制模块IOB18255内核8255A芯片2021-10-11计算机接口技术318255A8255A的的FPGAFPGA总体

25、设计框图,如图总体设计框图,如图13.13.7 7 所示。所示。图13.7 8255A FPGA总体设计框图2021-10-11计算机接口技术32 / 实例化语句,信号端口通过位置关联 T8255A T(reset,nCS,nRD,nWR,A,Din,PAin,PBin,PCin,DEn,PAEn,PBEn,PCEn,Dout,PAout,PBout,PCout); /内核模块 IOB BD(Dout,Din,Den,D); / 内部数据总线的传输方向控制模块 IOB BA(PAout, PAin,PAEn,PA); / A口的传输方向控制模块 IOB BB(PBout, PBin,PBEn,

26、PB); / B口的传输方向控制模块 IOB1 BC(PCout, PCin,PCEn,PC); / C口的传输方向控制模块13.4.2 顶层主模块设计顶层主模块设计主模块定义了芯片的外部接口,同时还定主模块定义了芯片的外部接口,同时还定义了假设干内部连线,用于连接内核模块和义了假设干内部连线,用于连接内核模块和其他外围模块。其他外围模块。采用元件例化语句,将采用元件例化语句,将8255A内核设计和内核设计和外围逻辑设计组装起来,形成完整的外围逻辑设计组装起来,形成完整的8255A功能。主要代码如下:功能。主要代码如下:2021-10-11计算机接口技术33 module IOB( Din,

27、Dout, InEn, Dbus ); input7:0 Din; input InEn; / InEn等于0时输入,等于1时输出 output7:0 Dout; inout7:0 Dbus; assign Dbus = (InEn)? Din:8hzz; assign Dout = (InEn)? Dout:Dbus;endmodule13.4.3 IOB模块和模块和IOB1模块设计模块设计IOBIOB模块将内核的单向数据总线综合设计成双模块将内核的单向数据总线综合设计成双向的数据总线,该模块向的数据总线,该模块8 8位数据一起输入位数据一起输入/ /出;出;IOB1IOB1模块将内核口模块

28、将内核口C C的单向数据总线设计成双的单向数据总线设计成双向的数据总线,该模块是按位控制的。向的数据总线,该模块是按位控制的。IOBIOB模块模块代码如下:代码如下:2021-10-11计算机接口技术3413.4.4 8255A内核模块设计内核模块设计控制模块控制模块多路数据模块多路数据模块A A口模块口模块B B口模块口模块C C口模块口模块2021-10-11计算机接口技术35控制模块控制模块作用:作用:管理内部、外部数据信息、控制字、状管理内部、外部数据信息、控制字、状态字的传送过程;解析态字的传送过程;解析CPUCPU送来的控制信号。送来的控制信号。输入输入:复位信号:复位信号rese

29、treset,片选,片选nCSnCS,端口选择,端口选择A1-0A1-0,写,写nWRnWR,读,读nRDnRD,输入数据,输入数据DinDin,PcinPcin。输出输出:选路信号:选路信号DoutSelectDoutSelect。 锁存允许信号锁存允许信号PAInLdPAInLd,PAOutLdPAOutLd,PBInLdPBInLd,PBOutLdPBOutLd和和PCOutLdPCOutLd控控制。制。各个口是否接受输入或输出:各个口是否接受输入或输出:输入输出选择信输入输出选择信号号DenDen,PAEnPAEn,PBEnPBEn和和PCEnPCEn,输出给外围逻辑模块,输出给外围逻

30、辑模块。控制信号控制信号CtrlDataCtrlData。2021-10-11计算机接口技术36 多路数据选择模块多路数据选择模块本质上是一个多路选择器,接受来自控制模块的选本质上是一个多路选择器,接受来自控制模块的选路信号后将选中的数据输出,包括路信号后将选中的数据输出,包括PAinPAin,PAInBufPAInBuf,PBInBufPBInBuf,PCinPCin和和PC_StatusPC_Status等。等。 口口A口口B输入输入/输出模块输出模块 口口A A和口和口B B都有一个输入和输出模块、都有一个输入和输出模块、8 8位的输入数据位的输入数据锁存器锁存器/ /缓冲器、缓冲器、8

31、 8位输出数据锁存器位输出数据锁存器/ /缓冲。缓冲。 C口输出和控制模块口输出和控制模块可作为普通的数据通道,又可作为控制和状态信息可作为普通的数据通道,又可作为控制和状态信息的通道,负责的通道,负责C C口的数据输入输出以及准确的产生接收和联口的数据输入输出以及准确的产生接收和联络信号,在不同的工作方式、络信号,在不同的工作方式、IOIO方向下产生相应的逻辑一方向下产生相应的逻辑一位一位控制位一位控制PCoutPCout,PCStatusPCStatus。n 2021-10-11计算机接口技术37各个模块间的数据流,如图各个模块间的数据流,如图13.8所示。所示。图13.8 内核模块间数据

32、流图2021-10-11计算机接口技术38 assign reset = (nCS)?1b1:rst; /实例化 CtrlLogic U1 (reset, nCS, nRD, nWR,A,Din, PCin4,PCin2, PCin6, PCin2, DEn, PAEn,PBEn,PCEn, PAInLd, PBInLd, PAOutLd, PBOutLd, PCOutLd, CtrlData, DoutSelect);DoutMux U2(PAin,PAInBuf,PBin,PBInBuf,PCStatus,DoutSelect,Dout); PCIO U3 (reset, nRD, nWR

33、,A,Din, PCin,CtrlData, PCOutLd,PCStatus, Pcout);PAIn U4( reset, PAin, PAInLd, PAInBuf); PAOut U5( reset,Din, PAOutLd,PAout); PBIn U6( reset, PBin, PBInLd, PBInBuf); PBOut U7( reset,Din, PBOutLd,PBout);内核模块代码设计内核模块代码设计两条内部数据总线两条内部数据总线Din和和Dout,用于内核内部,用于内核内部8位数据的输入输出;定义假设干内部连线用于位数据的输入输出;定义假设干内部连线用于内核各

34、模块的连接,采用元件例化语句,将图内核各模块的连接,采用元件例化语句,将图中各模块组装起来形成中各模块组装起来形成8255A内核完整功能。主内核完整功能。主要代码如下:要代码如下:2021-10-11计算机接口技术39always (reset or nCS or A or nWR or Din) /控制字存放器赋值 If(reset) /复位,存放器全部清零 else if(nCS=1b0 & A=2b11 & nWR=1b0 & Din7=1b1) / 写入方式选择控制字 begin ControlFlag = 1b1; ModeA = (Din6)? 2b10:Din6:5; PAIO

35、= Din4; PCUpIO = Din3; ModeB = Din2; PBIO = Din1; PCLowIO = Din0; end else if(nCS=1b0 & A=2b11 & nWR=1b0 & Din7=1b0) /按位置位/复位控制字 begin ControlFlag = 1b0; BitSelect = Din3:1; PCRS = Din0; end控制字的判断:控制字的判断:判断控制字是工作方式选择字还判断控制字是工作方式选择字还是对口是对口C C的按位置位的按位置位/ /复位控制字,以此为根据,复位控制字,以此为根据,决定控制字的分解方式。实现该功能的决定控制字

36、的分解方式。实现该功能的alwaysalways语语句如下:句如下:2021-10-11计算机接口技术40 13.4.5 控制模块设计控制模块设计 C口控制信号口控制信号CtrlData的产生:的产生: 将解析出将解析出的相关控制字存放器的值合成赋值给存放器的相关控制字存放器的值合成赋值给存放器CtrlData,输出控制,输出控制C口模块。实现该功能的口模块。实现该功能的always语句如下:语句如下:always (reset or ControlFlag or ModeA or ModeB or PAIO or PBIO) / CtrlData输出给C口模块 if(reset) CtrlD

37、ata = 7b0000000; else CtrlData = PCRS,ControlFlag,ModeA,ModeB,PAIO,PBIO;2021-10-11计算机接口技术41 输入输入/ /输出选择信号的产生输出选择信号的产生 外围逻辑输入外围逻辑输入/ /输出选择信号输出选择信号DEnDEn:由写、读信:由写、读信号决定。号决定。相关代码如下:相关代码如下:always (reset or nRD or nWR) / DEn if(reset) DEn = 1b0; else if(!nWR) DEn = 1b0; else if(!nRD) DEn = 1b1; else DEn

38、= 1b0;2021-10-11计算机接口技术42PAEn与与PBEn选择信号的产生选择信号的产生PAEn方式0和1时等于控制字中的PAIO方式2时取决于nACK信号PBEn:只取决于控制字中的PBIO2021-10-11计算机接口技术43PAEn与与PBEn选择信号的产生选择信号的产生always (reset or ModeA or PAIO or nSTBA or nACKA) / PAEn if(reset) PAEn = 1b0; /复位清0 else if(ModeA!=2b10) PAEn = PAIO; /A口工作于方式0/1,由输入输出方向决定 else /A口工作于方式2,

39、由nACK等信号决定 begin if(nSTBA=1b0) PAEn = 1b0; else if(nACKA=1b0) PAEn = 1b1; else PAEn = PAIO; end always (reset or ModeB or PBIO) / PBEn if(reset) PBEn = 1b0; /复位清0; else PBEn = PBIO; /由输入输出方向决定; 2021-10-11计算机接口技术44PCEnPCEnPCEn是逐位控制的,各位的值与是逐位控制的,各位的值与A/BA/B口的工作口的工作方式和传输方向有关。方式和传输方向有关。A/B口工作在方式0:PC作为数据

40、口使用,PCEn = PCIOA口为方式1或2时,PC局部引脚作专用的联络信号使用,PCEn的高5位与A口的方式和传输方向有关。B口为方式1时,PCEn的低三位与B口的方式和传输方向有关。2021-10-11计算机接口技术45PCEnalways (reset or ModeB or PCLowIO) /PCEn2-0,低三位由B口决定 if(reset) PCEn2:0 = 3b000; else if(ModeB=1b1) PCEn2:0 = 1b0,1b1,1b1; /B口方式1,固定 else PCEn2:0 = 3PCLowIO; /B口方式0,由输入输出方向决定always (re

41、set or ModeA or PCUpIO or PCLowIO or PAIO) /PCEn7-3,高5位,由A口决定 if(reset) PCEn7:3 = 5b00000; else if(ModeA=2b10) PCEn7:3 = 5b10101; /A口方式2,固定 else if(ModeA=2b01) /A口方式1,与方向有关; begin if(PAIO=1b0) PCEn7:3 = 2PCUpIO,1b1,1b0,1b1; /A口方式1输入 else PCEn7:3 = 1b1,1b0,2PCUpIO,1b1; /A口方式1输出 end else PCEn7:3 = 4PC

42、UpIO,PCLowIO; /A口方式02021-10-11计算机接口技术46always (reset or A or nRD) /PAInLd if(reset) PAInLd = 1b0; /复位清0; else if(nCS=1b0 & A=2b00 & nRD=1b0) PAInLd = 1b0; /A口选中,读 else PAInLd = 1b1; /其它情况always (reset or A or nRD) /PBInLd if(reset) PBInLd = 1b0; /复位清0 else if(nCS=1b0 & A=2b01 & nRD=1b0) PBInLd = 1b0

43、; /B口选中,读 else PBInLd = 1b1; /其它情况; A口和口和B口的锁存允许信号产生口的锁存允许信号产生A/BA/B模块的锁存允许信号由地址信号和读写信号模块的锁存允许信号由地址信号和读写信号给出。给出。相关代码如下:相关代码如下:2021-10-11计算机接口技术47 ModeA = 0时PC7-5用于输入/输出数据ModeB = 0时PC2-0用于输入/输出数据ModeA = 0且A口输入时,PC7和PC6位用于输入/输出数据ModeA = 0且A口输出时,PC5和PC4位用于输入/输出数据 C口的锁存允许信号产生口的锁存允许信号产生在方式选择字控制下,当在方式选择字控

44、制下,当C C口的某些位作为数据口口的某些位作为数据口时,相应位的时,相应位的PCOutLd = 0PCOutLd = 0;做联络口使用时,;做联络口使用时,相应的相应的PCOutLd=1PCOutLd=1。PCPC口做数据口使用时共有以下四种情况。口做数据口使用时共有以下四种情况。2021-10-11计算机接口技术48always (reset or ControlFlag or ModeA or ModeB or Din3:0 or PAIO) /PCOutLd if(reset) PCOutLd = 8b00000_000; else if(ControlFlag=0) /置位复位控制字

45、,PC在按位操作中,PCOutLd为0的位被选中 begin case( Din3:1 ) 3b000: PCOutLd = 8b11111110 ; 3b001: PCOutLd = 8b11111101 ; 3b010: PCOutLd = 8b11111011 ; 3b011: PCOutLd = 8b11110111 ; 3b100: PCOutLd = 8b11101111 ; 3b101: PCOutLd = 8b11011111 ; 3b110: PCOutLd = 8b10111111 ; 3b111: PCOutLd = 8b01111111 ; default: PCOut

46、Ld = 8b11111111 ; endcase end 相关代码如下:相关代码如下:2021-10-11计算机接口技术49相关代码如下:相关代码如下: else /方式选择控制字,作数据I/O的相应位为0; if(ModeA=2b00 & ModeB=1b0) PCOutLd = 8b00000000; /A口方式0,B口方式0; else if(ModeA=2b00 & ModeB=1b1) PCOutLd = 8b00000111; /A口方式0,B口方式1; else if(ModeA=2b01 & PAIO=1b0 & ModeB=1b0) PCOutLd = 8b00111000

47、; /A方式1输入,B方式0 else if(ModeA=2b01 & PAIO=1b0 & ModeB=1b1) PCOutLd = 8b00111111; /A方式1输入,B方式1 else if(ModeA=2b01 & PAIO=1b1 & ModeB=1b0) PCOutLd = 8b11001000; /A方式1输出,B方式0 else if(ModeA=2b01 & PAIO=1b1 & ModeB=1b1) PCOutLd = 8b11001111; /A方式1输出,B方式1 else if(ModeA=2b10 & ModeB=1b0) PCOutLd = 8b1111100

48、0; /A口方式2,B口方式0 else if(ModeA=2b10 & ModeB=1b1) PCOutLd = 8b11111111; /A口方式2,B口方式1 else PCOutLd = 8b00000000; /其它情况;2021-10-11计算机接口技术50 always (reset or A or nRD or ModeA or ModeB) /输出给Dout_Mux的选路信号 if(reset) Dout_Select = 3b000; else if(nRD=1b0) case (A) 2b00 : / 数据端口A if ( ModeA = 2b00) Dout_Selec

49、t = 3b000 ; / 工作于方式0, 口A输入数据不锁存 else Dout_Select = 3b001 ; / 口A输入数据锁存 2b01 : / 数据端口B if (ModeB = 1b0) Dout_Select = 3b010 ; / 口B输入数据不锁存 else Dout_Select = 3b011 ; / 口B输入数据锁存 2b10 : Dout_Select = 3b100 ; / 数据端口C, 口C输入数据不锁存 2b11 : Dout_Select = 3b110 ; endcase else Dout_Select = Dout_Select; endmodule

50、 选路信号选路信号DoutSelect的产生的产生多路数据选择模块的选路信号由地址信号和被选中多路数据选择模块的选路信号由地址信号和被选中的端口的当前工作方式有关。的端口的当前工作方式有关。相关代码如下:相关代码如下:2021-10-11计算机接口技术51 13.4.6 C口输出及控制模块设计口输出及控制模块设计解析控制信号解析控制信号CtrlDataCtrlData CtrlDataCtrlData内含有置位内含有置位/ /复位位、命令字的标志位、复位位、命令字的标志位、A A口方口方式、式、A A口口IOIO、B B口方式、口方式、B B口口IOIO等信息。等信息。assign PCRS

51、= CtrlData6; assign Flag = CtrlData5; assign ModeA = CtrlData4:3; assign ModeB = CtrlData2; assign PAIO = CtrlData1; assign PBIO = CtrlData0;2021-10-11计算机接口技术52A口输入时,外设通过引脚PC4发送数据选通信号STBB口输入时,外设通过引脚PC2发送数据选通信号STBA口输出时,外设通过引脚PC6发送响应信号ACKB口输出时,外设通过引脚PC2发送响应信号ACK方式方式1/2的选通和响应信号的选通和响应信号assign nSTBA = PC

52、In4; assign nSTBB = PCIn2; assign nACKA = PCIn6; assign nACKB = PCIn2;2021-10-11计算机接口技术53口C是数据口还是控制口口C作联络口时A/B的模式和IO例: PCout1的处理描述如下: if(PC1是数据口) PCout1为输出口,将内部总线数据Din1输出else if(B为输入口) PCout1为B口的输入缓冲器满信号IBFBelse PCout1为B口的输出缓冲器满信nOBFB C口的输出数据口的输出数据PCOut2021-10-11计算机接口技术54always (reset or Flag or PCO

53、utLd or PCOutD) /PCOut if(reset) PCOut = 8b00000000; /复位清0; else if(Flag=1b0) /置位/复位操作; case(PCOutLd) 8b11111110: PCOut = PCOut7:1,PCRS; 8b11111101: PCOut = PCOut7:2,PCRS,PCOut0; 8b11111011: PCOut = PCOut7:3,PCRS,PCOut1:0; 8b11110111: PCOut = PCOut7:4,PCRS,PCOut2:0; 8b11101111: PCOut = PCOut7:5,PCRS

54、,PCOut3:0; 8b11011111: PCOut = PCOut7:6,PCRS,PCOut4:0; 8b10111111: PCOut = PCOut7,PCRS,PCOut5:0; 8b01111111: PCOut = PCRS,PCOut6:0; default: PCOut = 8b11111111; endcase else PCOut = PCOutD;/高位到低位依次处理C口输出数据 always (reset or PCOutLd7 or nOBFA or Din7) /PCOutD7 if(PCOutLd7=1b0) PCOutD7 = Din7; else PCO

55、utD7 = nOBFA; always (reset or PCOutLd6 or Din6) /PCOutD6 if(PCOutLd6=1b0) PCOutD6 = Din6; else PCOutD6 = PCOut6; 相关代码如下:相关代码如下:PCOutPCOut需要按位处理,下面给出需要按位处理,下面给出6 6、7 7位的代码位的代码2021-10-11计算机接口技术55口C是数据口还是控制口口C作联络口时A/B的模式和IO例: PCStatus4的处理描述如下:C口的输出数据口的输出数据PCOutCif(PC4是数据口) PCStatus4为输入口 ,将PCIn4读入else

56、if(A口为方式1输出) PCStatus4为I/O, 将PCIn4读入else if(A口为方式1输入或为方式2 PCStatus4为A口输入中断允许信号INTEAInelse 锁存原值;2021-10-11计算机接口技术56always (reset or PCStatusBuf) /PCStatus if(reset) PCStatus = 8b00000000; else PCStatus = PCStatusBuf;/从高位到低位依次处理口C状态字PCStatus always (PCOutLd7 or PCIn7 or ModeA or PAIO or PCOut7) /PCSta

57、tusBuf7; if(PCOutLd7=1b0) PCStatusBuf7 = PCIn7 else if(ModeA=2b01 & PAIO=1b0) PCStatusBuf7 = PCIn7; else if(ModeA=2b01 & PAIO=1b1) | ModeA=2b10) PCStatusBuf7 = PCOut7; else PCStatusBuf7 = PCStatus7;C口的输出数据口的输出数据PCOutC相关代码如下:相关代码如下:PCStatus需要按位处理,需要按位处理,下面给出第下面给出第7位的代码位的代码2021-10-11计算机接口技术57 图13.9 A口

58、方式1输入时序状态机产生方式产生方式1/2的联络信号的联络信号当口当口A A或口或口B B 工作于方式工作于方式1 1或或2 2时,时,82558255还需要还需要 产生一些联络信号。产生一些联络信号。下面以口下面以口A A工作于方式工作于方式1 1输入时产生的缓冲器满信输入时产生的缓冲器满信号号IBFAIBFA为例说明,图为例说明,图13.13.9 9是方式是方式1 1输入时序图。输入时序图。2021-10-11计算机接口技术58always (reset or ModeA or PAIO or nSTBA or nRD) /IBFA: 由nSTBA信号置位,由nRD上升沿复位; if(reset) IBFAstate=2d0; else case(IBFAstate) 2d0: if(ModeA!=2b00 & PAIO=1b0 & nSTBA=1b0) IBFAstate=2d1; else IBFAstate=2d0; 2d1: if(nRD=1b0 & A=2b00 ) IBFAstate=2d2; else IBFAstate=2d1; 2d2: if(nRD=1b1) IBFAstate=2d0; else IBFAstate=2d2; default: IBFAstate=2d0; endcasealways (IBFAstate) if(IBFAstate=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论