东南大学信息学院-poc实验报告.docx
《东南大学信息学院-poc实验报告.docx》由会员分享,可在线阅读,更多相关《东南大学信息学院-poc实验报告.docx(18页珍藏版)》请在咨信网上搜索。
东南大学信息学院-poc实验报告 Computer Organization and Architecture COURSE DESIGN A Parallel Output Controller ------ (POC) Southeast university School of Information Science and Engineering 1. Design purpose a. The purpose of this project is to design and simulate a parallel output controller (POC) which acts an interface between system bus and printer. The ISE 14.7 EDA tool is recommended and provided for simulation. b. Learn about the using of Bi-directional Data Bus (BDB), and use a parallel Bi-directional Data Bus to finish the data transmission between CPU and POC. 2. Introduction and Tasks POC is one of the most common I/O modules, namely the parallel output controller. It plays the role of an interface between the computer system bus and the peripheral Figure 1. System structure diagram As Fig.1 shows the inner connecting of a printer to the system bus through the POC. The com- munication between POC and the printer is controlled by a “handshake” protocol given in Fig.2. Figure 2. The handshake-timing diagram between POC and the printer The handshaking process is described as follows: When the printer is ready to receive a char- acter, it holds RDY=1. The POC must then hold a character at PD (parallel data) port and produce a pulse at the terminal TR (transfer request). The printer will change RDY to 0, take the character at PD and hold RDY at 0 until the character has been printed (e.g. delay 5 or 10ms), then set RDY to 1 again when it is ready to receive the next character. The buffer register BR is used to temporarily hold a character sent from the processor, which char- acter will be transferred to the printer later. The status register SR is used for two control functions: ①SR7 serves as a ready flag to indicate POC is ready or not to receive a new character from the processor. ②SR0 is used to enable the interrupt requests sent by POC. In interrupt mode, If SR0=1, then POC will send an interrupt request signal to processor when it is ready to receive a character (i.e., when SR7=1). If SR0=0, then POC will not interrupt. The transfer of a character to POC via the system bus proceeds as follows: In interrupt mode, SR0 is always 1. After sending character to printer, POC sets the SR7 to 1, since SR0=1, the interrupt request signal (IRQ) is set to 0, which indicate an effective interrupt signal to the processor. 1、processor sets the value of SR7 &sets the value of BR ①When the processor detects the effective IRQ signal, the processor directly selects BR and writes a character into BR, (processor will never read the state of SR7, which is different with polling mode.) ②Then the processor sets the SR7 to 0, which indicates that the new character has been written into BR and not printed yet. 2、POC reads and sets the value of SR7& handshakes operations with the printer ①When POC detects that SR7 is set to 0, POC then proceeds to start the handshaking operations with the printer. ②After sending character to printer, POC sets the SR7 to 1, which indicates POC is ready to receive another character from the processor. The transfer cycle can now repeat.(① and ② are same with the polling state) PS: During the handshaking operations between POC and printer, the processor does not try to access POC until it receives the interrupt request signal 3. The overall connection of the simulated printer and POC expressed in the top module form Figure 3. The top module form of the project 4. Design description of the simulation input waveforms The input and output of CPU,POC and printer are shown below: Processorj Pins Description Input clk Input the clock for the CPU running. mode Choose the mode for printing. When mode=’1’,select a interrupt mode. IRQ Receive the interrupt signal IRQ. When IRQ='1' , new data can be sent. DIN[7..0] Read data from poc. DOUT[7..0] Write data into poc. Output rw Show the direction of the DOUT[7..0] and DIN[7..0] When rw='0', read data from POC. When 'rw'='1', write data to POC. A0 Control the address read and write on POC. When A0='0', choose SR. When A0='1', choose BR. CS CS=‘1’, poc work. data[7..0] The data send to POC to be printed POC Pins Description Input clk Input the clock for the POC running. RW Show the direction of the DOUT[7..0] and DIN[7..0] When rw='0', send data to CPU. When 'rw'='1', read data from CPU. A0 Input address, When A0='0', choose BR. When A0='1', choose SR. RDY Input the ready signal from printer. When RDY='1', the printer is idle. When RDY='0', the printer is busy. CS Input the mode of the POC. When CS=’0’,select a polling mode. When CS=’1’,select a interrupt mode. data[7..0] The data receive from CPU to be printed. Output PD[7..0] Output the data to printer. IRQ Output the interrupt signal IRQ to CPU, showing the POC and printer is ready. TR The response to print' RDY signal, a one-cycle pulse at the port TR (transfer request) shows that new data is sent to printer. DOUT[7..0] CS=0 POC send the state of SR to CPU ; CS=1 CPU read the data write in BR Signal SR[7..0] The register contains the flags for the POC. When SR(7)='1', it's idle. When SR(7)='0', it's busy. BR[7..0] The register holds the value of data to print. printer Pins Description Input clk Input the clock for the printer running. TR Input the pulse signal from POC, to show new data is coming. PD[7..0] Input the data from POC. Output RDY Output RDY signal, when RDY='1', it shows printer is waiting for new data. 5. Simulation results Connection between cpu and poc Connection between poc and printer Here are the explanations of the simulation wave: interrupt mode: 1、In the interrupt mode,mode is always set 1, the print process occures by the IRQ signal from poc. 2、When S(7)=0, IRA send ‘0’ to cpu, it means there is a print requirement and cpu begin to handle it. 3、 In the interrupt process RW and A0 are singals from cpu to poc to control the action of poc. RW=’1’ and A0=’1’ write data from cpu(D) to poc(BR), means the begin of the interrupt process. RW=’x’ and A0=’x’ means there is no interrupt requirement . 4、After sending datas to BR and set sr to “00000000”, if RDY=’1’, poc give a impulse in TR to make the printer begin to work. After the TR signal we can see that the input RDY signal from the printer change from 1 to 0, which shows that the TR signal really make the printer work. 5、After data of BR has been transmitted into printer, poc set SR to “10000001” itself to indicate that it comes to ready and can get the next print task. 6、Let data plus 1 to indicate the next new print cycle. 6. Conclusion and Discussions 1、As a parallel output controller ,poc module to act as an interface between cpu and printer. Form the simulation wave, we can see that my program meets the designs requirements. 2、I divide the system into three parts, and one top entity. And I use two way to finish the top entity. One is write program with vhdl language and another is create a schematic type file and connect wire. 3、By designing the POC module, I find it helps to learn how to use of quartus and VHDL for design and simulation.The process of designing also teachs me the importantce of figuring out the struc- ture and timing of the task before programming . Appendix: The program of processor: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; -- Uncomment the following library declaration if using -- arithmetic functions with Signed or Unsigned values --use IEEE.NUMERIC_STD.ALL; -- Uncomment the following library declaration if instantiating -- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all; entity processor is port ( clk : in std_logic; IRQ : in std_logic; DOUT : out std_logic_vector(7 downto 0):="00000000"; RW : out std_logic:='0';--0read,1write A0 : out std_logic:='0';--0sr,1br DIN : in std_logic_vector(7 downto 0) ); end processor; architecture Behavioral of processor is signal data:std_logic_vector(7 downto 0):="00000000"; signal mode:std_logic:='1';--默认为中断模式 begin process(clk) begin if clk'event and clk='1' then if mode='1' then if IRQ='0' then A0<='1'; RW<='1';--写入数据到BR data<=data+"00000001";--代表传输的字符 DOUT<=data; else A0<='X'; RW<='X';--读入SR的数据 end if; end if; end if; end process; end Behavioral; the program of poc: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use ieee.std_logic_arith.ALL; use ieee.std_logic_unsigned.ALL; -- Uncomment the following library declaration if using -- arithmetic functions with Signed or Unsigned values --use IEEE.NUMERIC_STD.ALL; -- Uncomment the following library declaration if instantiating -- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all; entity poc is port ( A0 : in std_logic; RW : in std_logic; clk : in std_logic; CS : in std_logic:='1'; RDY : in std_logic; IRQ : out std_logic:='1'; DOUT : out std_logic_vector(7 downto 0); PD : out std_logic_vector(7 downto 0); TR : out std_logic:='0'; DIN : in std_logic_vector(7 downto 0) ); end poc; architecture Behavioral of poc is signal SR : std_logic_vector(7 downto 0):="10000001"; signal BR : std_logic_vector(7 downto 0):="00000000"; signal count:integer range 0 to 5:=0; type state_type is (s0,s1,s2); signal state: state_type:=s0; begin process(clk) begin if clk'event and clk='1' then TR<='0'; IRQ<='1'; case state is when s0=>----中断请求信号 if SR(7)='1' then IRQ<='0';--中断请求 state<=s1; else IRQ<='1'; state<=s2;--无中断请求 end if; when s1=>----读入读出选择 if RW='1' and A0='1' then--cpu写入数据到BR BR<=DIN; SR(7)<='0'; state<=s2; elsif RW='0' and A0='0' then--cpu读入SR的数据 DOUT<=SR; elsif RW='1' and A0='0' then--cpu写入数据到SR SR<=DIN; elsif RW='0' and A0='1' then--cpu读入BR的数据 DOUT<=BR; end if; when s2=>----打印机 if RDY='1' then TR<='1'; PD<=BR; SR(7)<='1'; end if; state<=s0; end case; end if; end process; end Behavioral; the program of printer: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use ieee.std_logic_arith.ALL; use ieee.std_logic_unsigned.ALL; -- Uncomment the following library declaration if using -- arithmetic functions with Signed or Unsigned values --use IEEE.NUMERIC_STD.ALL; -- Uncomment the following library declaration if instantiating -- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all; entity print is port ( RDY : out std_logic:='1'; TR : in std_logic; PD : in std_logic_vector(7 downto 0); clk : in std_logic ); end print; architecture Behavioral of print is signal count: integer range 0 to 5:=0; signal data: std_logic_vector(7 downto 0); signal ready:std_logic; begin process(clk,TR) begin if clk'event and clk='1' then if TR='1' then RDY<='0'; ready<='0'; data<=PD; else if ready='0' then count<=count+1; if count=5 then RDY<='1'; ready<='1'; count<=0; end if; end if; end if; end if; end process; end Behavioral; connection program: library IEEE; use IEEE.STD_LOGIC_1164.ALL; -- Uncomment the following library declaration if using -- arithmetic functions with Signed or Unsigned values --use IEEE.NUMERIC_STD.ALL; -- Uncomment the following library declaration if instantiating -- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all; entity top is port ( CLK : in std_logic ); end top; architecture Behavioral of top is signal a0:std_logic; signal irq:std_logic; signal d1:std_logic_vector(7 downto 0); signal d2:std_logic_vector(7 downto 0); signal rw:std_logic; signal rdy:std_logic; signal pd:std_logic_vector(7 downto 0); signal tr:std_logic; component processor port ( clk : in std_logic; IRQ : in std_logic; DOUT : out std_logic_vector(7 downto 0):="00000000"; RW : out std_logic:='0';--0read,1write A0 : out std_logic:='0';--0sr,1br DIN : in std_logic_vector(7 downto 0) ); end component; component poc port ( A0 : in std_logic; RW : in std_logic; clk : in std_logic; CS : in std_logic:='1'; RDY : in std_logic; IRQ : out std_logic:='1'; DOUT : out std_logic_vector(7 downto 0); PD : out std_logic_vector(7 downto 0); TR : out std_logic:='0'; DIN : in std_logic_vector(7 downto 0) ); end component; component print port ( RDY : out std_logic:='1'; TR : in std_logic; PD : in std_logic_vector(7 downto 0); clk : in std_logic ); end component; begin u1: processor port map(clk=>CLK,A0=>a0,RW=>rw,IRQ=>irq,DOUT=>d1,DIN=>d2); u2: poc port map(clk=>CLK,A0=>a0,RW=>rw,IRQ=>irq,DOUT=>d2,DIN=>d1,RDY=>rdy,TR=>tr,PD=>pd); u3: print port map(clk=>CLK,RDY=>rdy,TR=>tr,PD=>pd); end Behavioral;- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东南大学 信息 学院 poc 实验 报告
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文