EDA实验实验报告

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字eda实验实验报告

学院:计算机科学与工程学院专业:通信工程学

号: 0941903207 姓名:薛蕾指导老

师:钱强

实验一四选一数据选择器的设计

一、实验目的

1、熟悉quartus ii软件的使用。

2、了解数据选择器的工作原理。

3、熟悉eda开发

的基本流程。

二、实验原理及内容

实验原理

数据选择器在实际中得到了广泛的应用,尤其是在通信中为了利用多路信号中的一路,

可以采用数据选择器进行选择再对该路信号加以利用。从多路输入信号中选择其中一路进行

输出的电路称为数据选择器。或:在地址信号控制下,从多路输入信息中选择其中的某一路

信息作为输出的电路称为数据选择器。数据选择器又叫多路选择器,简称mux。 4选1数据

选择器:

(1)原理框图:如右图。

d0 、d1、d2、d3 :输入数据 a1 、a0 :地址变量

由地址码决定从4路输入中选择哪1路输出。

(2)真值表如下图:

(3)逻辑图

数据选择器的原理比较简单,首先必须设置一个选择标志信号,目的就是为了从多路信

号中选择所需要的一路信号,选择标志信号的一种状态对应着一路信号。在应用中,设置一

定的选择标志信号状态即可得到相应的某一路信号。这就是数据选择器的实现原理。

三.实验内容

1、分别采用原理图和vhdl语言的形式设计4选1数据选择器

2、对所涉及的电路进行

编译及正确的仿真。电路图:

四、实验程序

library ieee;

use ieee.std_logic_1164.all; entity mux4 is port( a0, a1, a2, a3 :in std_logic; s :in std_logic_vector (1 downto 0); y :out std_logic ); end mux4; architecture archmux of mux4 is begin y <= a0 when s = 00 else --当s=00时,y=a0 a1 when s = 01 else --当s=01时,y=a1 a2 when s = 10 else --当s=10时,y=a2

a3; --当s取其它值时,y=a2

end archmux;

五、运行结果

六.实验总结

真值表分析:

当js=0时,a1,a0取00,01,10,11时,分别可取d0,d1,d2,d3. 篇二:eda实验报告模版

《eda技术》实验报告

实验名称:序列检测器设计

实验日期:x月xx号指导教师: xxx 姓名: xxxxxx

学号: xxxxxx 班级: xxxxxx 杭州电子科技大学

一、实验设计要求:

实验目的:用状态机实现序列检测器的设计,了解一般状态机的设计与应用。

实验内容:根据8.2.2节有关原理介绍,利用quartus ii对例8-4进行文本编辑输入、

仿真并给出仿真波形,了解控制信号的时序,最后进行引脚锁定并完成硬件测试实验。由于

本例中的状态机对于序列的检测不能连续,也就是一旦出现不符合的数字时就会全部归零处

理,这样实际上并不是最完备的检测手段,请对例中的代码稍作修改来完成连续序列检测。

二、设计原理:

2.1 状态机原理图:

图2-1状态机状态转换图

图2-2状态机模块示意图

2.2 原理解释:

状态转换图如上图所示,下面的是模块的示意图。状态机有几个接口,分别是时钟端clk,

数据输入端din,复位端rst和输出端out。每个时钟上升沿读入外部的一位数据,根据读到

的数据,状态机进行当前状态的改变,而复位端的功能是将状态机的状态恢复到初始态。只

有检测到11010011这个数据序列的时候状态机才会输出一个1即高电平信号。

如图的状态转换图可以看出,设计的状态机输入的数据是可重复的,即并不是每次都要

依次输入规定的数据进入下一状态,否则就归回初始态;而是可以重复的。比如要求是检测

11010011序列的,可是输入刚开始是1后面一直是1,这时候不会不断地复位,而是会保持

在”11”状态也就是第二状态,等待出现0进入下一状态。

三、实验程序:

3.1 序列检测状态及电路程序:

input包括时钟clk、数据输入din、复位端rst;output包括一个out端,为了表示9

个状态,声明了一个4位的寄存器,因为四位可以表示最多16个状态;为了保存次态的信息,

又声明了一个4位的寄存器,用来存储次态的信息,为了下次上升沿读取。主程序中包括两

个过程语句,一个是用来对状态机的状态进行操作的,如果复位有效,下一个时钟上升沿就

是将状态变成初始态;而如果不是就在下一个时钟上升沿将状态变成次态。

另一个过程语句是用来对次态的状态进行赋值、改变的。它根据现在的状态检测输入的

数据的高低电平来决定次态是什么样的状态,并将次态用寄存器保存起来。声明两个寄存器

的,就是为了一个用来保存次态信息,一个用来保存现态。module

series_chk(din,out,clk,rst); input clk,din,rst; output out; reg[3:0] st,nst; parameter s0=07, s1=08, s2=09,

s3=10, s4=11, s5=12, s6=13, s7=14, s8=15;

//------------------------------------------------------------------------------

------------------------------------// always@(posedge clk or posedge rst)begin /*

只有在时钟的上升沿来到时, next_state才被保存为current_state*/ end

//------------------------------------------------------------------------------

------------------------------------// always@(st or din)begin /* next_state 根据

current_state 的状态一直在变化并且跟时钟是独立的,不依赖于时钟*/ end

//------------------------------------------------------------------------------

相关文档
最新文档