您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页实验2-优先编码器

实验2-优先编码器

来源:爱go旅游网
实验3:优先编码器的Verilog HDL描述及仿真

一、实验目的及要求:

1.掌握优先编码器的Verilog HDL描述方法 2.理解逻辑综合的概念

3.掌握RTL电路原理图分析的分析方法

二、实验工具:Quartus_II 9.0

三、实验原理: 1. 优先编码器简介

在数字系统中,常常需要将某一信息变换为某一特定的代码,把二进制代码按一定的规律编排,时每组代码具有一定的含义称为编码。具有编码功能的逻辑电路称之为编码器。常常会有几个部件同时发出服务请求的可能,而在同一时刻只能给其中一个部件发出允许操作信号。因此,必须根据轻重缓急,规定好这些控制对象允许操作的先后次序,即优先级别。

8-3优先编码器有8个输入端,3个输出端。还有一个输入使能,输出使能和优先编码器工作状态标志。编码器以低为有效。输入优先级别的次序为7,6,5,…,0。当某一输入端有低电平输入,且比它优先级高的输入没有低电平输入时,输出端才输出相应输入端的代码。优先编码器的真值表如下表1所示。

表1.

2.Verilog程序设计与逻辑综合 2.1 8-3线编码器示例

always @ (din) begin case(din)

8’b0000_0001: dout = 3’b000;

8’b0000_0010: dout = 3’b001; 8’b0000_0100: dout = 3’b010; 8’b0000_1000: dout = 3’b011; …

8’b1000_0000: dout = 3’b111; default : dout = 3’bx; endcase end

2.2 优先编码器设计 效

always @ (din) begin casex(din)

8’b1xxx_xxxx: dout = 3’b111; 8’b01xx_xxxx: dout = 3’b110; 8’b001x_xxxx: dout = 3’b101; 8’b0001_xxxx: dout = 3’b100; …

8’b0000_0001: dout = 3’b000; default : dout = 3’bx; endcase end

2.3.逻辑综合

逻辑综合是在标准单元库和特定的设计约束的基础上,把设计的高层次描述转换成优化的门级网表的过程。

注意:程序设计方法不同,则逻辑综合得到的RTL原理图不同。 单条的if---else语句综合为一个二选1数据选择器,如程序: module compif (out, d0, d1, s); input d0, d1, s; output out; reg out;

always @( s or d0 or d1)

逻辑综合后的RTL原理图如图2所示。

if (s) out = d1; else out = d0; endmodule

优先编码器与上面描述的普通8-3线编码器不同,每次只需判断优先级高的输入端是否有

AND2d1sOR2outd0 图2. 单条if---else语句的RTL图

定义了所有可能的选项的if—then嵌套语句,综合结果是受条件控制的纯组合逻辑电路。不给出所有if分支值,则综合出的结果会带有锁存器,变为时序逻辑电路。

case语句综合为数据选择器,一般用于设计庞大的数据选择器。

四、实验步骤: 1. 新建项目工程

(1)先建一个文件夹。就在电脑本地硬盘找个地方建一个用于保存下一步工作中要产生的工程项目的文件夹,注意:文件夹的命名及其保存的路径中不能有中文字符。

(2)再开始建立新项目工程,方法如右图点击:【File】菜单,选择下拉列表中的【New Project Wizard...】命令,打开建立新项目工程的向导对话框。选择项目工程保存位置、定义项目工程名称以及设计文件顶层实体名称。第二栏(项目工程名称)和第三栏(设计实体名称)软件会默认为与之前建立的文件夹名称一致。没有特别需要,我们一般选择软件的默认,不必特意去修改。需要注意的是:以上名称的命名中不能出现中文字符,否则软件的后续工作会出错。完成以上命名工作后,点击Next,进入下一步。

第2步的工作是让你将之前已经设计好的工程文件添加到本项目工程里来,若没有之前设计好的文件,直接点Next,再进入下一步。

第3步的工作是让你选择好设计文件下载所需要的可编程芯片的型号,本实验中可任选一种,比如Cyclone Ⅲ EP3C40Q240C8。

第4步是让你选择第三方开发工具,我不需要,直接点击Next,进入下一步。 2. 新建设计文件

建立好一个新的项目工程后,接下来可以开始建立设计文件了。Quartus II软件可以用两种方法来建立设计文件,一种是利用软件自带的元器件库,以编辑电路原理图的方式来设计一个数字逻辑电路,另一种方法是应用硬件描述语言(如VHDL或Verilog)以编写源程序的方法来设计一个数字电路。

本实验采用Verilog HDL编写源程序。 (1)创建Verilog HDL文件

从File菜单中选择【New…】命令,打开新建设计文件对话框,如下图。

(2)编写Verilog HDL程序 (3)保存Verilog HDL文件

选择File—〉Save,要求文件与模块名称一致。 3. 项目工程编译

设计好的程序若要让软件能认识并检查设计的电路是否有错误,需要进行项目工程编译,Quartus II软件能自动程序进行编译和检查设计的正确性。方法如下:

在【Processing 】菜单下,点击【Start Compilation】命令,或直接点击常用工具栏上的 按钮,开始项目。编译成功后,点击 确定 按钮。 4. 功能仿真

仿真是指利用QuartusII软件对所设计电路的逻辑功能进行验证,在进行仿真之前,需要先建立一个输入信号波形文件。方法和步骤如下:

(1)在【File】菜单下,点击【New】命令。在随后弹出的对话框中,切换到【Other Files】页。选中【Vector Waveform File】选项,点击 OK 按钮。

(2)在【Edit】菜单下,点击【Insert Node or Bus…】命令,或在下图Name列表栏下方的空白处双击鼠标左键,打开编辑输入、输出引脚对话框。

(3)在上图新打开的对话框中点击【Node Finder…】按钮,打开【Node Finder】对话框。点击【List】按钮,列出电路所有的端子。点击 >> 按钮,全部加入。点击 OK 按钮,确认。

点击OK回到 Insert Node or Bus 对话框,再点击 OK 按钮,确认。 (4)设置输出参数

选择Edit—〉Endtime1μs 选择View—〉Fit In Window 选择Edit—〉Gridsize—〉50ns

(5)为输入端口赋值。

(6)将仿真模式设置为“功能仿真”模式。

(7)选择好“功能仿真”模式后,选择【Processing】菜单,点击【Generate Functional Simulation Netlist】命令,生成一个“功能仿真的网表文件”,运行完成后,点击确定。

(8)开始功能仿真,在【Processing】菜单下,选择【Start Simulation】启动仿真工具,或直接点击常用工具栏上的

5、RTL原理图分析

(1)RTL Viewer

在左边的菜单栏中,在【Analysis & Synthesis】菜单下,选择下拉菜单列表中的【Netlist Viewers】,然后点击【RTL Viewer】菜单,可得到下图所示的RTL原理电路图。

dout~[2..1]dout~[4..3]din[7..0]001DATAA2' h3 --DATABSELSELOUT02' h0 --DATAADATABOUT0DATAA3' h5 --MUX21MUX21MUX21MUX21DATAB按钮。仿真结束后,点击确认按钮。观察仿真结果,对比输

入与输出之间的逻辑关系是否符合电路的逻辑功能。

dout~[7..5]dout~[10..8]SELSELOUT03' h6 --DATAADATABOUT03' h7 --DATAADATABdout~[13..11]SELOUT0dout~0dout[2.MUX21 如前所述,程序设计的方法不同,则逻辑综合得到的RTL原理图不同,要求根据程序设(2)Technology Map Viewer

Technology Map Viewer显示映射(后综合)和适配的结果:基本原件(atom primitives)

计所采用的方法,对RTL原理图进行分析。

的层级(hierarchy),比如芯片的Logic cells(LCELLs)和I/O ports。对于支持的芯片,也能显示LCELLs中的寄存器及查找表(LUTs)和I/O基本原件中的寄存器。

在左边的菜单栏中,在【Analysis & Synthesis】菜单下,选择下拉菜单列表中的【Netlist Viewers】,然后点击【Technology Map Viewer】菜单,可得到如下图所示的映射图。

din[4]~inputdout~17din[0..7]IODATAAdout[1]~outputCOMBOUTIOdout~16IO_IBUFDATAADATABDATACOdout~14DATABDATACCOMBOUTDATADdin[6]~inputILOGIC_CELL_COMB (FDFC)LOGIC_CELL_COMB ()DATAADATABDATACDATADCOMBOUTIIO_OBUFdout~15dout[0]~outputOIO_IBUFdin[7]~inputIOLOGIC_CELL_COMB (AFAE)IO_OBUFIO_IBUFdin[5]~inputIODATAAIO_IBUFDATABDATACDATADOLOGIC_CELL_COMB (FFFE)COMBOUTIdout~18dout[2]~outputOdin[3]~inputIdout[0..2]IO_OBUFIO_IBUFdin[2]~inputIOIO_IBUFdin[1]~inputIOIO_IBUFen~inputenIIO_IBUFdin[0]~inputIIO_IBUF

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务