VHDL八选一数据选择器实验完整版
八选一数据选择器逻辑表达式

请注意,这只是一种实现八选一数据选择器的逻辑表达式示例,实际的实现方式可能因电 路设计和需求而有所不同。
Y = (S AND A0) OR (S' AND A1) OR (S' AND A2) OR (S' AND A3) OR (S' AND A4) OR (S' AND A5) OR (S' AND A6) OR (S' AND A7)
八选一数据选择器逻辑表达式
其中,AND表示逻辑与操作,OR表示逻辑或操作,S'式
八选一数据选择器是一种逻辑电路,用于从八个输入信号中选择一个作为输出。以下是一 个使用逻辑表达式实现八选一数据选择器的示例:
假设有8个输入信号A0, A1, A2, A3, A4, A5, A6, A7和一个选择信号S,用于选择要输出 的信号。输出信号为Y。
逻辑表达式可以如下表示:
[教材]8选1数据选择器74LS151
![[教材]8选1数据选择器74LS151](https://img.taocdn.com/s3/m/9a40d9cecf2f0066f5335a8102d276a200296008.png)
8选1数据选择器74LS15174LS151为互补输出的8选1数据选择器,引脚排列如图所示,功能见表。
选择控制端(地址端)为C~A,按二进制译码,从8个输入数据D0~D7中,选择一个需要的数据送到输出端Y,G为使能端,低电平有效。
(1)使能端G=1时,不论C~A状态如何,均无输出(Y=0,W=1),多路开关被禁止。
838电子(2)使能端G=0时,多路开关正常工作,根据地址码C、B、A的状态选择D0~D7中某一个通道的数据输送到输出端Y。
如:CBA=000,则选择D0数据到输出端,即Y=D0。
新艺图库如:CBA=001,则选择D1数据到输出端,即Y=D1,其余类推。
工作原理ab126计算公式大全74LS151功能表:在数字系统中,往往要求将并行输出的数据转换成串行输出,用数据选择器很容易完成这种转换。
例如将四位的并行数据送到四选一数据选择器的数据端上,然后在A1,A0地址输入端周期性顺序给出00 01 10 11,则在输出端将输出串行数据,不断重复。
数据选择器除了能从多路数据中选择输出信号外,还可以实现并行数据到串行数据的转换,作函数发生器等。
1.逻辑特性(1) 逻辑功能:从多路输入中选中某一路送至输出端,输出对输入的选择受选择控制量控制。
通常,对于一个具有2n路输入和一路输出的多路选择器有n个选择控制变量,控制变量的每种取值组合对应选中一路输入送至输出。
(2) 构成思想: 多路选择器的构成思想相当于一个单刀多掷开关,即数据选择器的原理o74LS151为互补输出的8选1数据选择器,引脚排列如图3-2,功能如表3-1。
选择控制端(地址端)为A2~A0,按二进制译码,从8个输入数据D0~D7中,选择一个需要的数据送到输出端Q,为使能端,低电平有效。
图74LS151引脚排列使能端=1时,不论A2~A0状态如何,均无输出(Q=0,=1),多路开关被禁止。
1)使能端=0时,多路开关正常工作,根据地址码A2、A1、A0的状态选择D0~D7中某一个通道的数据输送到输出端Q。
verilog语言编写八选一数据选择器电子版本

verilog语⾔编写⼋选⼀数据选择器电⼦版本v e r i l o g语⾔编写⼋选⼀数据选择器⼋选⼀选择器⼀、实验⽬的编写⼀个⼋选⼀的选择器,并在verilog软件上进⾏仿真。
⼆、代码1、源代码(1)⽤数据流描述的⼋选⼀多路选择器模块,采⽤了逻辑⽅程module mux8_to_1(out,i0,i1,i2,i3,i4,i5,i6,i7,s2,s1,s0); output out;input i0,i1,i2,i3,i4,i5,i6,i7;input s2,s1,s0;assign out=s2?(s1?(s0?i7:i6):(s0?i5:i4)):(s1?(s0?i3:i2):(s0?i1:i0));endmodule(2)⽤数据流描述的⼋选⼀多路选择器模块,采⽤了条件操作语句module mux8_to_1(out,i0,i1,i2,i3,i4,i5,i6,i7,s2,s1,s0); output out;input i0,i1,i2,i3,i4,i5,i6,i7;input s2,s1,s0;assign out=(~s2&~s1&~s0&i0)|(~s2&~s1&s0&i1)|(~s2&s1&~s0&i2)|(~s2&s1&s0&i3)|(s2&~s1&~s0&i4)|(s2&~s1&s0&i5)|(s2&s1&~s0&i6)|(s2&s1&s0&i7);endmodule(3)⽤⾏为及描述的⼋选⼀多路选择器模块可描述为:module mux8_to_1(out,i0,i1,i2,i3,i4,i5,i6,i7,s2,s1,s0);output out;input i0,i1,i2,i3,i4,i5,i6,i7;input s2,s1,s0;reg out;always @(s2 or s1 or s0 or i0 or i1 or i2 or i3 or i4 or i5 or i6 or i7)begincase({s2,s1,s0})3'b000:out=i0;3'b001:out=i1;3'b010:out=i2;3'b011:out=i3;3'b100:out=i4;3'b101:out=i5;3'b110:out=i6;3'b111:out=i7;defult:$dispiay("Invalid control signals");endcaseendendmodule或者是:module mux8_to_1(out,i0,i1,i2,i3,i4,i5,i6,i7,s2,s1,s0);output out;input i0,i1,i2,i3,i4,i5,i6,i7;input s2,s1,s0;reg out;always @(s2 or s1 or s0 or i0 or i1 or i2 or i3 or i4 or i5 or i6 or i7) begincase({s2,s1,s0})3'd1:out=i0;3'd2:out=i1;3'd3:out=i2;3'd4:out=i3;3'd5:out=i4;3'd6:out=i5;3'd7:out=i6;3'd8:out=i7;defult:$dispiay("Invalid control signals");endcaseendendmodule2、激励模块`timescale 1ns/100ps module mux8_to_1_tb;。
VHDL语言实例

VHDL 语言实例例1:设计一七段显示译码器,用它来驱动七段发光管 到9和字母A 到F 。
LED 显示数码管为共阳极。
LIBRARY ieee;USE ieee.std_logic_1164.all; ENTITY HEX2LED ISP ORT(LED : OUT std_logic_vector(6 TO图例1七段显示译码器实体ARCHITECTURE HEX2LED_arc OF HEX2LED IS BEGIN--HEX-TO-SEVEN-SEGMENT DECODER --SEGMENT ENCODING--5 | |1-- — — — — --4 | |20);HEX2LEDHEX :IN std_logic_vector(3 DOWNTO HEXES. . 0]"0) );LED 显示十六进制数字0ENDHEX2LED;WITH HEX SELECTLED<= "1111001" when "0001","0100100" when "0010","0110000" when "0011","0011001" when "0100","0010010" when "0101","0000010" when "0110","1111000" when "0111","0000000" when "1000","0010000" when "1001","0001000" when "1010","0000011" when "1011","1000110" when "1100","0100001" when "1101","0000110" when "1110","0001110" when "1111","1000000" when others;END HEX2LED_arc;例 2 :设计一个八选一数据选择器1)s 是通道选择信号,d0,d1,d2,d3,d4,d5,d6,d7 数据输入out1 是数据输出ENTITY sels ISP ORT(d0,d1,d2,d3,d4,d5,d6,d7:IN BIT;s :INTEGERRANGE0 TO 7;END sels;ARCHITECTURE sels_arc OF sels IS BEGINWITH s SELECTout1 <= d0 WHEN 0, d1 WHEN 1, d2 WHEN 2, d3 WHEN 3,d4 WHEN 4,d5 WHEN 5, d6 WHEN 6, d7 WHEN 7;END sels_arc;LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY mux8 ISPORT(IO,I1,I2,I3,I4,I5,I6,I7,A,B,C:IN std_logic; END mux8;sels图例2 (a)八选一数据选择器实体图例2 (b)八选一数据选择器实体out1 :OUT BIT);2)A,B,C 是通道选择信号,据输出10,11,12,13,14,15,16,17数据输入 Q 是数Q :OUT std_logic);ARCHITECTURE mux8_arc OF mux8 ISSIGNAL sel :INTEGER ;BEGINQ <= 10 AFTER 10 ns WHEN sel= 0 ELSE11 AFTER 10 ns WHEN sel= 1 ELSE 12 AFTER 10 ns WHEN sel= 2 ELSE 13 AFTER 10 ns WHEN sel= 3 ELSE 14 AFTER 10 ns WHEN sel= 4 ELSE 15 AFTER 10 ns WHEN sel= 5 ELSE 16 AFTER 10 ns WHEN sel= 6 ELSE 17 AFTER 10 ns ;sel <= 0 WHEN A=‘ 0' AND B= ‘ 0' AND C= ‘ 0' ELSE1 WHEN A= '1' AND B= ‘ 0'AND C='0' ELSE2 WHEN A='0' AND B=‘1' AND C= '0' ELSE3 WHEN A='1' AND B=‘1' AND C='0' ELSE4 WHEN A='0' AND B=‘ 0'AND C= '1' ELSE5 WHEN A='1' AND B=‘ 0'AND C= '1' ELSE6 WHEN A='0' AND B=‘ 0'AND C= '1' ELSE7;END mux8_arc;例3:设计一 D 触发器 d 是输入端,clk 是时钟信号控制端,q 是触发器的输出端。
8位CPU的设计-VHDL语言-综合性实验实验报告

综合性实验报告计算机组成原理年级专业班级:10级软工R3班小组号: 5完成日期:2012-06-06【分工包括:、、执行(ALU相关)、通用寄存器组、存储器等】(一)实验类型:验证性+设计性(二)实验类别:综合性专业基础实验(三)实验学时数:8学时(四)实验目的理解和验证参考代码,并在其基础上,通过适当改造,尝试设计一个简单的CPU,并测试其结果。
(五)实验内容设计一个能验证计算机CPU工作原理的实验系统,包括取指部分、指令译码部分、执行部分、通用寄存器组以及存储器,并测试其结果。
(六)实验要求根本目标:缩小到8位的数据通路,也即是4位OP和4位的地址码。
(参考代码是16位数据通路,也即8位OP和8位的地址码)(参见实践报告.doc中的9-11页的指令系统总体说明)学生按照实验要求,在实验平台上实现具有存储与运算功能的计算机系统,并能通过测试,以验证其正确性。
具体要求如下:(1)取指及调试(组长兼任)。
熟悉指令取指过程,并把16位的部分改为8位。
使用DebugController和系统中的调试模块(reg_testa.vhd,reg_test.vhd)。
(2)熟悉电原理图的连接,以通用寄存器组部分为例。
实现上,用实验4所用的简单通用寄存器组(4个寄存器+1个2-4译码器+2个4选1多路开关)设计方法,替代参考代码中的通用寄存器组部分。
(3)学习和掌握控制逻辑。
设计一套指令集(可在原参考代码指令集的基础上做删减,从中选取16条基本的指令),并修改控制器中指令集的译码部分。
(4)执行部件,ALU的改造。
可在原参考代码的基础上,改变某些运算功能的实现方式,比如加、减、增1、减1等算术运算。
实现上,原参考代码采用了最少编码量的“+”、“-”号实现。
可以改用通过port map语句调用系统自带的加法器,也可以进一步自己编写加法器,然后用port map语句调用。
(5)存储器部分的加入。
原参考代码采用的带外部存储器的模式。
实验2组合逻辑电路的VHDL设计

实验二 组合逻辑电路的VHDL 设计一、实验目的与要求 1、目的(1)熟悉VHDL 语言的基本结构(2)掌握用VHDL 语言实现组合逻辑功能器件的逻辑功能的一般方法。
2、要求(1)调试程序要记录调试过程中出现的问题及解决办法; (2)给出每个问题的算法或画出流程图;(3)编写程序要规范、正确,上机调试过程和结果要有记录,并注意调试程序集成环境的掌握及应用,不断积累编程及调试经验; (4)做完实验后给出本实验的实验报告。
二、实验设备、环境PII 以上计算机,装有QuartusII 软件 三、方法与步骤(一)教师简单回顾所需知识并演示较一个简单功能的实现过程。
1、 简单回顾组合逻辑电路的特点及常用逻辑功能器件的功能 2、 回顾QuartusII 的VHDL 操作步骤3、 以4选1数据选择器为例,重点演示该组合逻辑单元的VHDL 设计过程。
(1)4选1数据选择器的真值表与电路符号(2)4选1数据选择器的参考VHDL 程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux41 ISPORT(S :IN STD_LOGIC_VECTOR (1 DOWNTO 0); A,B,C,D : IN STD_LOGIC; Y :OUT STD_LOGIC );地址输入输出S0 S1 0 0 A 0 1 B 1 0 C 11DS[1..0]A B C DYMULTI_4VA B C DS[1..0]YEND mux41;ARCHITECTURE a OF mux41 ISBEGINPROCESS (s,A,B,C,D)BEGINIF (S="00") THENY <= A;ELSIF (S="01") THENY <= B;ELSIF (S="10") THENY <= C;ELSIF (S="11") THENY <= D;END IF;END PROCESS;END a;四、实验过程、内容、数据处理及分析按照设计选题编写简单程序1、可供选择进行设计的组合逻辑电路如下,要求规定课时内至少完成3种逻辑电路的设计。
八选一数据选择器逻辑电路设计思路

八选一数据选择器逻辑电路设计思路哎呀,这题目真是让人头疼啊!不过没关系啦,小生我可是万能的,一定能帮你解决这个问题。
我们得明确一下题目的要求:设计一个八选一数据选择器逻辑电路。
听起来好像挺复杂的,但是别担心,小生我可是经验丰富,一定能让你轻松搞定。
我们要了解一下八选一数据选择器的原理。
它其实就是一个有8个输入端口和1个输出端口的电路。
当我们给这个电路输入不同的数据时,它会根据一定的逻辑关系,从8个输入端口中选择其中一个输出。
这个过程就像是在一堆人里面挑出一个人一样,只不过这个人是根据某种规则挑选出来的而已。
那么,我们该如何设计这样一个逻辑电路呢?其实,方法有很多种。
比如说,我们可以用三态门来实现。
三态门是一种特殊的逻辑门,它有3个输出状态:高电平、低电平和高阻态。
我们可以通过控制三态门的输入和输出,来实现八选一数据选择器的功能。
具体来说,我们可以这样设计:我们用4个二极管和2个三极管搭建一个基本的触发器电路。
然后,我们在这个触发器的基础上,加上一些逻辑门,用来实现八选一的功能。
具体来说,我们可以用一个或门(OR)来连接8个输入端口和一个与门(AND)。
当且门的输入端都是高电平时,与门的输出端就会是高电平;否则,与门的输出端就会是低电平。
这样一来,我们就可以根据与门的输出端来判断应该选择哪个输入端口作为输出了。
当然啦,这只是一种方法而已。
实际上,还有很多其他的方法可以用来实现八选一数据选择器的功能。
比如说,我们还可以用乘法器和加法器来实现;或者用寄存器和移位寄存器来实现等等。
只要我们掌握了这些基本的逻辑知识,就一定能够设计出一个高效的八选一数据选择器逻辑电路。
好啦,现在我们已经知道了一个八选一数据选择器的原理和实现方法。
接下来呢,我们就要开始动手实践了!我们需要准备一些基本的电子元器件,比如二极管、三极管、电阻、电容等等。
然后呢,我们就可以按照前面提到的方法,开始搭建我们的逻辑电路了。
哎呀呀,这可不是一件容易的事情哦!有时候会遇到各种各样的问题,比如说电路接错了、元件烧坏了等等。
vhdl课程设计设计模为 4、8、12、16的可变计数器实验报告总结

VHDL课程设计 - 可变计数器实验报告总结
一、设计概述
本课程设计的主要目标是设计并实现一个可变计数器,其模(Modulo)值可以在4、8、12、16之间进行选择。
计数器采用VHDL编程语言进行描述,并在FPGA开发板上进行测试验证。
二、设计实现
1. 硬件平台:我们选择了Xilinx的FPGA开发板作为硬件平台,它具有丰富的I/O资源和足够的逻辑单元,可以满足我们的设计需求。
2. VHDL编程:我们采用VHDL语言进行编程,实现了模4、模8、模12和模16的可变计数器。
通过选择不同的计数模式,计数器的模值可以在4、8、12、16之间进行切换。
3. 测试与验证:为了验证计数器的功能,我们编写了测试平台,并通过仿真和实际硬件测试对计数器进行了全面的测试。
三、实验结果与分析
1. 实验结果:通过仿真和实际硬件测试,我们验证了计数器的
功能正确性。
在不同的模值下,计数器都能正确地进行计数操作,并且在达到模值后能正确地回绕到0。
2. 结果分析:实验结果表明,我们的VHDL编程和FPGA开发技能得到了很好的应用和提升。
同时,通过这次课程设计,我们更深入地理解了可变计数器的设计和实现原理,提高了我们的硬件设计能力。
四、总结与展望
本次课程设计让我们深入了解了VHDL编程语言和FPGA开发技术,提高了我们的硬件设计能力。
通过实际的设计和测试,我们成功地实现了一个可变模值的计数器,达到了课程设计的要求。
在未来的学习和工作中,我们将继续深入学习FPGA设计和VHDL编程,不断提高自己的硬件设计能力。
同时,我们也期待将这种技术应用于更多的实际项目中,为工程实践做出贡献。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学生实验报告
实验课名称:VHDL硬件描述语言
实验项目名称:八选一数据选择器
专业名称:电子科学与技术
班级:电科二班
学号:***
学生姓名:***
教师姓名:***
__2020__年_11_月_06_日
组别_____________________同组同学_______________________
实验日期_____年___月___日实验室名称______________成绩_____ 一、实验名称:
八选一数据选择器
二、实验目的与要求:
实验目的:设计一个8选1的数据选择器,初步掌握QuartusII软件的使用方法以及硬件编程下载的基本技能。
实验要求:通过VHDL编程,实现一个数据选择器,要求有8位数据输入端,1位数据输出端,通过3位地址输入信号寻址,并具有输出使能功能。
首先在QuartusII上进行功能和时序仿真,之后通过器件及其端口配置下载程序到SOPC 开发平台中。
如图所示:
d0~d7为数据输入端;
g为使能端,高电平有效;
a[2..0]为地址输入端;
y为输出端。
注:要求非使能或是无效地址状态时,y输出0。
首先在QuartusII上进行功能和时序仿真,之后通过器件及其端口配置下载程序到SOPC开发平台中。
在硬件实现中,要求:
1. 用实验平台的拨动开关实现8位输入信号(d0~d7)
:
注:要求使用最右面8个开关。
2. 用实验平台的按键实现地址信号和使能信号:
注:采用模式0的输入方式,并使用最左边的键6~键8
三个按键实现地
址输入,以及键3实现使能信号。
3. 输出采用LED发光阵列的LED12。
三、实验内容:
◆
新建工程:
1、打开Quartus ,新建工程,选择好路径,工程顶层名为mux8_1 ;
2、新建工程,如果包含已编好的文件则可以添加,如果无则可以略过 ;
3、选择我们的器件信息:
4、单击Next>,指定第三方工具,这里我们不指定第三方EDA 工具,单击Next>后
结束工程建立。
◆
建立编译VHDL 文件:
1、单击File\New 菜单项,选择弹出窗口中的VHDL File 项,单击OK 按钮以建立打开空的VHDL 文件,并以工程顶层文件名保存。
2、输入源代码完后单击Processing\Start Compilation 开始编译,并修改其中
的错误直到没有为止。
◆ 建立矢量波形文件
1单击File\New 命令,选择其中的Vector Waveform File 项,点击OK 建立空的波形文件,打开矢量波形文件编辑窗口;
2双击窗口左边空白区域,打开Insert Node or Bus对话框;
3单击Node Finder…按钮,打开以下对话框,选择Filter下拉列表中的Pins:all,并点击List按酒以列出所有的端口,通过>>按钮把这些端口加入到右面的窗口中,单击OK完成端口的添加;
4回到波形编辑窗口,对所有输入端口设置输入波形,具体可以通过左边的工具栏,或通过对信号单击鼠标右键的弹出式菜单中完成操作,最后保存次波形文件。
进行仿真:
1、单击Assignments\Settings ,Simulation mode设置为Functional,即功能
仿真。
指定仿真波形文件后单击OK完成设置;
2、单击Processing\Generate Functional Simulation Netlist以获得功能仿
真网络表;
3、单击Processing\Start Simulation完成功能仿真。
4、如果功能仿真无误后进行时序仿真:单击Assignments\Settings,在弹出对
话框中Simulation mode设置为Timing,即时序仿真。
指定仿真波形文件后单击OK完成设置。
5、单击Processing\Start Simulation,完成时序仿真。
6、如果时序仿真也没错即可下载工作了。
四、实验条件:
1. WindowsXP操作系统
2. QuartusII EDA开发系统
3. 杭州康芯SOPC硬件开发平台
六、源代码:
library ieee;
use mux8_1 is
port(g:in std_logic;
a:in std_logic_vector(2 downto 0);
d:in std_logic_vector(7 downto 0);
y:out std_logic:='0');
end entity;
architecture wen of mux8_1 is
begin
process(g,a,d)
begin
if(g='1')then
case a is
when "000"=>y<=d(0);
when "001"=>y<=d(1);
when "010"=>y<=d(2);
when "011"=>y<=d(3);
when "100"=>y<=d(4);
when "101"=>y<=d(5);
when "110"=>y<=d(6);
when "111"=>y<=d(7);
end case;
else
y<='0';
end if;
end process;
end architecture wen;
七、实验结果与分析:
1、功能仿真:
2、时序仿真:
总结分析:经功能仿真,波形符合要求,然后经过时序仿真,虽有些噪声,但结果还是符合要求的,所以可以下载到芯片里进行实物仿真验证了。
3、下载后实物操作:
总结:由以上实物图可以看出实验的正确性。
说明:键3输出高电平; 8位输入数据分别是d7~d0:1、0、1、0、1、0、1、0,此时地址信号a[]为“001”选通d1,LED12输出(灯亮)指示d1为高电平。
说明:地址信号a[2..0]为“110”选通d6,LED12输出(灯灭)指示d1为低电平。
八、讨论和回答问题及体会:
1、这是vhdl的第一个实验,虽然简单,但多少还是面临很多问题的,所以我们
不能掉以轻心;
2、源代码的书写要小心,偶尔少个都好之类的问题时有发生,这严重的影响了
实验的速度,而且不符合我们严谨的作风,所以以后要格外注意;
3、这次代码的书写还是比较简单的,修改了几个小的错误后仿真就OK了;
4、管脚的设定比较费时费力,而且容易出错,一开始下载完成后老是不对应,
就是因为管脚对应出了问题,检查了好长时间才改正;
5、实验虽然简单,但最后能得到正确的实验结果还是非常高兴的。