4选1选通器verilog代码

4选1选通器verilog代码
4选1选通器verilog代码

3 实验3

3.1 实验内容

题目:设计一个1位的四选一多路选择器

要求:1.使用二选一多路选择器模块进行搭建

2.出现正确的仿真波形,无需板子上验证。

3.2 实验步骤

1.系统设计

利用3个2选1选通器搭建4选1一位选通器。利用第二题中已编写好的2选

1选通器,在新编写的4选1中实例化三个子模块实现。设计原理图如下:

2.重要源代码及注释

4选1:

module mux4to1(a,b,c,d,s1,s2,out);

input wire a,b,c,d;

input wire s1,s2;

output wire out;

wire out1,out2;

mux2to1 f1(.a(a),.b(b),.sel(s1),.out(out1));

mux2to1 f2(.a(c),.b(d),.sel(s1),.out(out2));

mux2to1 f3(.a(out1),.b(out2),.sel(s2),.out(out));

endmodule

子模块——2选1:

module mux2to1(a,b,sel,out );

input a,b,sel;

output out;

wire out;

assign out=sel?a:b;

endmodule

3.3 结果分析

1.Testbench代码

module test();

reg a,b,c,d,s1,s2;

wire out;

mux4to1 U0(.a(a),.b(b),.c(c),.d(d),.s1(s1),.s2(s2),.out(out));

initial

begin

a=0;b=0;c=0;d=0;s1=0;s2=0;

end

always

fork

#10 a=1; #20 a=0;

#15 b=1; #10 b=0;

#5 c=1; #10 c=0;

#30 d=1; #20 d=0;

#5 s1=0; #10 s1=1;

#10 s2=1; #20 s2=0;

join

endmodule

2.仿真波形图

3.说明

S1S2对应输出:00——d;01——b;10——c;11——a;

0~10ns: s1s2为00,out=d;

10~20ns: s1s2为11,out=a;

20~30ns: s1s2为10,out=c;

后续波形也同样符合逻辑设计。

四选一数据选择器源程序

四选一数据选择器源程序 Library ieee; Use ieee.std_logic_1164.all; Entity mux4_2 is Port (din: in std_logic_vector(3 downto 0); a,b : in std_logic; S: out std_logic); End; Architecture with_when of mux4_2 is Signal sel : std_logic_vector(1 downto 0); Begin Sel<=a&b; S<=din(0) when sel=“00”else din(1)when sel= “01” else din(2)when sel= “10” else din(3);---见程序说明。 Architecture with_select of mux4 is Signal sel :std_logic_vector(1 downto 0); begin sel<=a&b; with sel select s<=din(0) when “00”, s<=din(1) when “01”,

s<=din(2) when “10”, s<=din(3) when “11”, …Z?when others; End; 程序说明: 1.本程序中含有两个结构体,with_when和with_select,max+plus软 件系统自动执行几何位置处于最后的机构体with_select. 2.结构体with_when是用并行条件信号赋值语句描述四选一数据选 择器。注意,最后一个输出din(3)不含有when子句;在s表达式中只有一个分号(;)。 3.结构体with_select.是用并行选择信号赋值语句描述四选一数据选 择器。注意,选择信号赋值语句中选择条件与case语句相似,不允许条件重叠和涵盖不全。由于a,b的值除了‘1’‘0’外,还有其他7个值,所以要用when others代表其他值,以穷尽所有可能值。 4.同一个设计任务,可以用不同的语句进行描述, 5.本程序中din为输入4位矢量信号。 实例2 3线----8线译码器 一、设计任务 描述一个3线-8线译码器,使能端为g1、g2a、g3b,地址选择端为a、 b、c,输出端为总线y。 二、算法设计

2选1多路选择器 EDA实验报告

EDA实验报告 学生姓名:asfmla;m 学号:eafvpa[cv专业班级:电子3班 组合电路设计 一、实验目的 熟悉quartusⅡ的VHDL文本设计全过程,学习简单组合电路的设计、多层次电路设计、仿真。 二、实验内容 实验内容:首先利用quartusⅡ完成2选1多路选择器(例4-3)的文本编译输入(mux21a.vhd)和仿真测试等步骤,最后在实验系统上硬件测试,验证此设计的功能。将此多路选择器看成一个元件mux21a,利用元件例化语句描述成三选一,然后进行编译、综合、仿真。引脚锁定以及硬件下载测试。建议选实验电路模式5,用键1(PIO0)控制s0;用键2(PIO1)控制s1;a3、a2和a1分别接clock5、clock0和clock2;输出信号outy仍接扬声器spker。通过短路帽选择clock0接256HZ信号,clock5接1024HZ信号,clock2接8HZ信号。最后选行编译、下载和硬件测试实验。 三、实验器材 Quartus II软件。 四、设计思路/原理图 五、实验程序 实验内容1:二选一: library ieee; use ieee.std_logic_1164.all; entity mux21a is port(a,b: in std_logic; s: in std_logic; y: out std_logic); end entity; architecture dataflow of mux21a is begin

y<=a when s='0' else b; end architecture; 实验内容2:三选一 library ieee; use ieee.std_logic_1164.all; entity mux31a is port(a1,a2,a3: in std_logic; s0,s1: in std_logic; outy: out std_logic); end entity mux31a; architecture m31a of mux31a is component mux21a port( a,b: in std_logic; s: in std_logic; y: out std_logic); end component; signal tmp: std_logic; begin u1: mux21a port map(a=>a2,b=>a3,s=>s0,y=>tmp); u2: mux21a port map(a=>a1,b=>tmp,s=>s1,y=>outy); end architecture; 六、实验步骤 在E盘新建一个文件夹,用于存放工程。打开quartus,新建工程,然后选择新建VHDL 文件,命名为mux21a。在VHDL编辑窗口中输入实验程序后,进行编译、仿真;在实验一的基础上,新建VHDL文件,命名为mux31a。在VHDL编辑窗口中输入实验程序后,进行编译、综合、仿真;最后进行硬件测试。 七、仿真波形分析 二选一波形: 分析:当s=0时,y=a;当s=1时,y=b。 三选一综合图形及其波形

选多路选择器

选多路选择器 部门: xxx 时间: xxx 整理范文,仅供参考,可下载自行编辑

EDA实验二4选1多路选择器设计实验 一、实验目的 进一步熟悉 QuartusII 的 VHDL 文本设计流程、组合电路的设计仿真和测试。 二、实验内容 实验内容一:根据4.1流程,利用 QuartusII 完成四选一多路选择器的文本编辑输入和仿真测试等步骤,给出仿真波 形。 b5E2RGbCAP 实验内容二:对 VHDL 不同描述方式的四选一多路选择器进行硬件实验,比较他们的特性。 三、实验记录 1.when-else语句设计的4选1多路选择器 a>.利用when-else语句的vhdl程序 library ieee。 use ieee.std_logic_1164.all。 entity mux41a is port( a,b,c,d,s0,s1:in std_logic。 y:out std_logic>。 end entity mux41a。 architecture one of mux41a is begin

y<= a when s0='0' and s1='0' else b when s0='1' and s1='0' else c when s0='0' an d s1='1' else d。 end architecture one。 备注 以上是when-else语句设计的4选1多路选择器的vhdl描述。程序中应该注意的有以下几点 A.一:实体的命名要和工程名相同,并且不能是中文的或者以数字 开头; B.二:when-else语句具有最高赋值优先级; b>.when-else语句设计的4选1多路选择器的RTL图 图<1)when-else语句设计的4选1多路选择器的RTL图 c>.when-else语句设计的4选1多路选择器的时序仿真波形图

EDA技术与应用的二选一选择器

EDA 技术与应用的二选一选择器 学院名称: 东方学院 专 业: 电子信息工程 班 级: 学 号: 姓 名: 指导教师姓名: 指导教师职称: 2007年 4 月24日 JIANGSU TEACHERS UNIVERSITY OF TECHNOLOGY 本科课程设计(论文)

二选一选择器 一.设计目的 1.学习VHDL编程; 2.进一步熟悉实验箱电路; 二.设计指标及功能要求 设计指标: (1)对所设计的小系统功能正确分析; (2)基于VHDL语言描述系统的功能; (3)在QUARTUSⅡ环境中编译通过; (4)仿真通过,并得到正确的波形; (5)给出相应设计报告; 功能要求:1.用VHDL语言设计可控加减计数器; 2.至少两层电路,底层有三种元件; 3.使得其执行可控加,减记数; 三.实验步骤 1.建立Light目录,用于存放本实验所建立的文本 2.点击“File New”,在出现的对话框中,选择“VHDL File”进入文本编辑器。 3.输入VHDL语言源文件。 4.点“Save as”,保存该源文件。 5.进行编译,点“start compilation”,若语句有错会有提示,修改后重新编译直到无错误。

6.点“File New”,选择“Vector Waveform File”,建立仿真输入文件. 7.点“End time”,输入终止时间(表示波形长度).点“light”将所有信号选中或部分选中。点“start simulation”.运行波形,直至正确。 四、电路工作原理 首先,用异或门控制输入端,加一个脉冲信号。在其后方分别加上加法计数器和减法计数器:来一个脉冲,当异或门输出为0时,减法计数器开始工作,当输出为1时,加法计数器工作。这样,利用给异或门加不同的信号来控制加减计数器。 五.各子模块设计与调试过程 library ieee; use ieee.std_logic_1164.all; entity ora is port(a:in std_logic; b:out std_logic); end entity; architecture one of ora is begin b<=not a; end architecture;

实验二4选1数据选择器的设计

实验二 4选1数据选择器的设计 实验学时:2学时 实验类型:设计 实验要求:必做 一、实验目的 通过实验让学生掌握组合逻辑电路的EDA原理图输入设计法,通过电路的仿真和硬件验证,让学生进一步了解4选1数据选择器的功能。 二、实验原理 数据选择器又叫“多路开关”。数据选择器在地址码(或叫选择控制)电位的控制下,从几个数据输入中选择一个并将其送到一个公共的输出端。数据选择器的功能类似一个多掷开关。数据选择器为目前逻辑设计中应用十分广泛的逻辑部件,它有2选1、4选1、8选1、16选1等类别。数据选择器的电路结构一般由于活门阵列而成,也有用传输门开关和门电路混合而成的。 图1 4选1数据选择器原理图 图1是一个4选1数据选择器,d3—d0是数据输入端,s1和s0是控制输入端,y是4选1数据输出端。 三、实验内容 设计并实现一个4选1数据选择器,要求根据原理图写出它的逻辑关系,并利用开发工具软件对其进行编译和仿真,最后通过实验开发系统对其进行硬件验证。

四、实验步骤 1)在Maxplus2的图形编辑方式下,从prim元件库中调出4选1数据选择器电路所需要的元件。并按照图1所示的原理电路,完成4选1数据选择器原理图的输入设计。 2)保存好原理图文件,以为文件名保存在工程目录中。执行Compiler命令对设计文件进行编译。执行Create Default Symbol命令,可为4选1数据选择器生成一个元件符号。 3)在波形编辑方式下,编辑的波形文件,并完成输入信号d3,d2,d1和d0,控制信号s1和s0电平的设置。波形文件编辑结束后以为波形文件名存盘。执行仿真器Simulator命令,仿真开始,观察仿真波形进行设计电路的功能验证。 五、实验结果 1. 4选1数据选择器的逻辑功能及真值表 2.仿真波形

VHDL语言设计4选1多路选择器

4选1多路选择器的VHDL描述 要求:THEN语句和CASE语句实现4选1多路选择器,其中选择控制信号s1和s0的数据类型为STD_LOGIC_VECTOR;当s1=?0?,s0=?0?;s1=?0?,s0=?1?;s1=?1?,s0=?0?和s1=?1?,s0=?1?时,分别执行y<=a、y<=b、y<=c、y<=d。 一、解法1:用IF_THEN语句实现4选1多路选择器 (1)程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux41 IS PORT (a,b,c,d: IN STD_LOGIC; s0: IN STD_LOGIC; s1: IN STD_LOGIC; y: OUT STD_LOGIC); END ENTITY mux41; ARCHITECTURE if_mux41 OF mux41 IS SIGNAL s0s1 : STD_LOGIC_VECTOR(1 DOWNTO 0);--定义标准逻辑位矢量数据BEGIN s0s1<=s1&s0; --s1相并s0,即s1与s0并置操作 PROCESS(s0s1,a,b,c,d) BEGIN IF s0s1 = "00" THEN y <= a; ELSIF s0s1 = "01" THEN y <= b; ELSIF s0s1 = "10" THEN y <= c; ELSE y <= d; END IF; END PROCESS; END ARCHITECTURE if_mux41; (2)编译的结果如下:

编译报告: 二、解法2:用CASE语句实现4选1多路选择器(1)程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux41 IS PORT (a,b,c,d: IN STD_LOGIC;

Verilog状态机的写法

Verilog状态机的写法-转 1 引言 Verilog HDL作为当今国际主流的HDL语言,在芯片的前端设计中有着广泛的应用。它的语法丰富,成功地应用于设计的各个阶段:建模、仿真、验证和综合等。可综合是指综合工具能将Verilog HDL代码转换成标准的门级结构网表,因此代码的描述必须符合一定的规则。大部分数字系统都可以分为控制单元和数据单元两个部分,控制单元的主体是一个状态机,它接收外部信号以及数据单元产生的状态信息,产生控制信号,因而状态机性能的好坏对系统性能有很大的影响。 有许多可综合状态机的Verilog代码描述风格,不同代码描述风格经综合后得到电路的物理实现在速度和面积上有很大差别。优秀的代码描述应当易于修改、易于编写和理解,有助于仿真和调试,并能生成高效的综合结果。 2 有限状态机 有限状态机(Finite State Machine,FSM)在数字系统设计中应用十分广泛。根据状态机的输出是否与输入有关,可将状态机分为两大类:摩尔(Moore)型状态机和米莉 (Mealy)型状态机。Moore型状态机的输出仅与现态有关;Mealy型状态机的输出不仅与现态有关,而且和输入也有关。图1是有限状态机的一般结构图,它主要包括三个部分,其中组合逻辑部分包括状态译码器和输出译码器,状态译码器确定状态机的下一个状态,输出译码器确定状态机的输出,状态寄存器属于时序逻辑部分,用来存储状态机的内部状态。 图1 状态机的结构框图 2.1 好的状态机标准 好的状态机的标准很多,最重要的几个方面如下: 第一,状态机要安全,是指FSM不会进入死循环,特别是不会进入非预知的状态,而且由于某些扰动进入非设计状态,也能很快的恢复到正常的状态循环中来。这里面有两层含义。其一要求该FSM的综合实现结果无毛刺等异常扰动,其

八选一数据选择器和四位数据比较器verilog实验报告)

Verilog HDV 数字设计与综合 实验报告 微电子0901班 姓名:袁东明 _ 学号:_04094026 一、实验课题: 1.八选一数据选择器 2.四位数据比较器 二、八选一数据选择器Verilog程序: 2.1主程序 module option(a,b,c,d,e,f,g,h,s0,s1,s2,out); input [2:0] a,b,c,d,e,f,g,h; input s0,s1,s2; output [2:0] out; reg [2:0] out; always@(a or b or c or d or e or f or g or h or s0 or s1 or s2) begin case({s0,s1,s2}) 3'd0 : out=a;

3'd1 : out=b; 3'd2 : out=c; 3'd3 : out=d; 3'd4 : out=e; 3'd5 : out=f; 3'd6 : out=g; 3'd7 : out=h; endcase end endmodule 2.2激励程序 module sti; reg [2:0] A,B,C,D,E,F,G,H; reg S0,S1,S2; wire [2:0] OUT; option dtg(A,B,C,D,E,F,G,H,S0,S1,S2,OUT); initial begin A=3'd0;B=3'd1;C=3'd2;D=3'd3;E=3'd4;F=3'd5;G=3'd6;H=3'd7;S0=0;S1=0;S2=0; #100 A=3'd0;B=3'd1;C=3'd2;D=3'd3;E=3'd4;F=3'd5;G=3'd6;H=3'd7;S0=0;S1=0;S2=1; #100 A=3'd0;B=3'd1;C=3'd2;D=3'd3;E=3'd4;F=3'd5;G=3'd6;H=3'd7;S0=0;S1=1;S2=0; #100 A=3'd0;B=3'd1;C=3'd2;D=3'd3;E=3'd4;F=3'd5;G=3'd6;H=3'd7;S0=0;S1=1;S2=1; #100 A=3'd0;B=3'd1;C=3'd2;D=3'd3;E=3'd4;F=3'd5;G=3'd6;H=3'd7;S0=1;S1=0;S2=0; #100 A=3'd0;B=3'd1;C=3'd2;D=3'd3;E=3'd4;F=3'd5;G=3'd6;H=3'd7;S0=1;S1=0;S2=1;

VHDL+Verilog良好的代码编写风格

VHDL+Verilog良好的代码编写风格(二十五条) 田Sir 发表于: 2010-4-28 13:56 来源: 湖北师范学院电工电子实验教学示范中心良好代码编写风格可以满足信、达、雅的要求。在满足功能和性能目标的前提下,增强代码的可读性、可移植性,首要的工作是在项目开发之前为整个设计团队建立一个命名约定和缩略语清单,以文档的形式记录下来,并要求每位设计人员在代码编写过程中都要严格遵守。良好代码编写风格的通则概括如下:(1)对所有的信号名、变量名和端口名都用小写,这样做是为了和业界的习惯保持一致;对常量名和用户定义的类型用大写; (2)使用有意义的信号名、端口名、函数名和参数名; (3)信号名长度不要太长; (4)对于时钟信号使用clk 作为信号名,如果设计中存在多个时钟,使用clk 作为时钟信号的前缀;(5)对来自同一驱动源的信号在不同的子模块中采用相同的名字,这要求在芯片总体设计时就定义好顶层子模块间连线的名字,端口和连接端口的信号尽可能采用相同的名字; (6)对于低电平有效的信号,应该以一个下划线跟一个小写字母b 或n 表示。注意在同一个设计中要使用同一个小写字母表示低电平有效; (7)对于复位信号使用rst 作为信号名,如果复位信号是低电平有效,建议使用rst_n; (8)当描述多比特总线时,使用一致的定义顺序,对于verilog 建议采用bus_signal[x:0]的表示; (9)尽量遵循业界已经习惯的一些约定。如*_r 表示寄存器输出,*_a 表示异步信号,*_pn 表示多周期路径第n 个周期使用的信号,*_nxt 表示锁存前的信号,*_z 表示三态信号等; (10)在源文件、批处理文件的开始应该包含一个文件头、文件头一般包含的内容如下例所示:文件名,作者,模块的实现功能概述和关键特性描述,文件创建和修改的记录,包括修改时间,修改的内容等;(11)使用适当的注释来解释所有的always 进程、函数、端口定义、信号含义、变量含义或信号组、变量组的意义等。注释应该放在它所注释的代码附近,要求简明扼要,只要足够说明设计意图即可,避免过于复杂; (12)每一行语句独立成行。尽管VHDL 和Verilog 都允许一行可以写多个语句,当时每个语句独立成行可以增加可读性和可维护性。同时保持每行小于或等于72 个字符,这样做都是为了提高代码得可读性;(13)建议采用缩进提高续行和嵌套语句得可读性。缩进一般采用两个空格,如西安交通大学SOC 设计中心2 如果空格太多则在深层嵌套时限制行长。同时缩进避免使用TAB 键,这样可以避免不同机器TAB 键得设置不同限制代码得可移植能力; (14)在RTL 源码的设计中任何元素包括端口、信号、变量、函数、任务、模块等的命名都不能取Verilog 和VHDL 语言的关键字; (15)在进行模块的端口申明时,每行只申明一个端口,并建议采用以下顺序:输入信号的clk、rst、enables other control signals、data and address signals。然后再申明输出信号的clk、rst、enalbes other control signals、data signals; (16)在例化模块时,使用名字相关的显式映射而不要采用位置相关的映射,这样可以提高代码的可读性和方便debug 连线错误; (17)如果同一段代码需要重复多次,尽可能使用函数,如果有可能,可以将函数通用化,以使得它可以复用。注意,内部函数的定义一般要添加注释,这样可以提高代码的可读性; (18)尽可能使用循环语句和寄存器组来提高源代码的可读性,这样可以有效地减少代码行数; (19)对一些重要的always 语句块定义一个有意义的标号,这样有助于调试。注意标号名不要与信号名、变量名重复; (20)代码编写时的数据类型只使用IEEE 定义的标准类型,在VHDL 语言中,设计者可以定义新的类型和子类型,但是所有这些都必须基于IEEE 的标准; (21)在设计中不要直接使用数字,作为例外,可以使用0 和1。建议采用参数定义代替直接的数字。同

个人总结Verilog代码编写的25条经验

个人总结Verilog代码编写的25条经验 1、对所有的信号名、变量名和端口名都用小写,这样做是为了和业界的习惯保持一致;对常量名和用户定义的类型用大写; 2、使用有意义的信号名、端口名、函数名和参数名; 3、信号名长度不要太长; 4、对于时钟信号使用clk 作为信号名,如果设计中存在多个时钟,使用clk 作为时钟信号的前缀; 5、对来自同一驱动源的信号在不同的子模块中采用相同的名字,这要求在芯片总体设计时就定义好顶层子模块间连线的名字,端口和连接端口的信号尽可能采用相同的名字; 6、对于低电平有效的信号,应该以一个下划线跟一个小写字母b 或n 表示。注意在同一个设计中要使用同一个小写字母表示低电平有效; 7、对于复位信号使用rst 作为信号名,如果复位信号是低电平有效,建议使用rst_n; 8、当描述多比特总线时,使用一致的定义顺序,对于verilog 建议采用bus_signal[x:0]的表示; 9、尽量遵循业界已经习惯的一些约定。如*_r 表示寄存器输出,*_a 表示异步信号,*_pn 表示多周期路径第n 个周期使用的信号,*_nxt 表示锁存前的信号,*_z 表示三态信号等; 10、在源文件、批处理文件的开始应该包含一个文件头、文件头一般包含的内容如下例所示:文件名,作者,模块的实现功能概述和关键特性描述,文件创建和修改的记录,包括修改时间,修改的内容等; 11、使用适当的注释来解释所有的always 进程、函数、端口定义、信号含义、变量含义或信号组、变量组的意义等。注释应该放在它所注释的代码附近,要求简明扼要,只要足够说明设计意图即可,避免过于复杂; 12、每一行语句独立成行。尽管VHDL 和Verilog 都允许一行可以写多个语句,当时每个语句独立成行可以增加可读性和可维护性。同时保持每行小于或等于72 个字符,这样做都是为了提高代码得可读性; 13、建议采用缩进提高续行和嵌套语句得可读性。缩进一般采用两个空格,如西安交通大学SOC 设计中心2 如果空格太多则在深层嵌套时限制行长。同时缩进避免使用TAB 键,这样可以避免不同机器TAB 键得设置不同限制代码得可移植能力; 14、在RTL 源码的设计中任何元素包括端口、信号、变量、函数、任务、模块等的命名都不能取Verilog 和VHDL 语言的关键字; 15、在进行模块的端口申明时,每行只申明一个端口,并建议采用以下顺序: 输入信号的clk、rst、enables other control signals、data and address signals。然后再申明输出信号的clk、rst、enalbes other control signals、data signals; 16、在例化模块时,使用名字相关的显式映射而不要采用位置相关的映射,这样可以提高代码的可读性和方便debug 连线错误; 17、如果同一段代码需要重复多次,尽可能使用函数,如果有可能,可以将函数通用化,以使得它可以复用。注意,内部函数的定义一般要添加注释,这样可以提高代码的可读性;

4选1数据选择器

电子设计技术课程设计 四位加法器 姓名:黄政 学号:2011059605 班级:通信工程zb421101 指导教师:郑雪娇 2013年12月26日 1

一、设计目的 1. 熟练使用Verilog HDL语言在mux plusⅡ软件平台上编写程序,完成编译工作。 2.学习VHDL程序中数据对象、数据类型、顺序语句、并行语句的综合使用,了解VHDL程序的基本结构。 3.掌握使用EDA工具设计数字系统的设计思路和设计方法。学习VHDL基本逻辑电路的综合设计应用。 4.学习实验开发系统的使用方法。 二、设计内容 1、设计并调试好一个4选1数据选择器。 2、仿真、分析结果、绘制波形 三、设计过程 1、程序的设计 打开mux plusⅡ,单击file,选择new ,选择Editor file类型。进行文本编辑,编辑完成后并以“max4_1.vhd”(注意后缀是.Vhd)为文件名,存在自己建立的工程目录D:\(自己的文件夹)内。进行存盘操作时,系统在弹出的存盘操作对话框中,自动保留了上一次存盘时的文件名和文件目录,不要随意单击“OK”按钮结束存盘,一定要填入正确的文件名并选择正确的工程目录后,才能单击“OK”按钮存盘,这是上机实验时最容易忽略和出错的地方。程序设计内容如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MUX41A IS PORT(D3,D2,D1,D0,A1,A0,EN:IN STD_LOGIC; Y:OUT STD_LOGIC); END ENTITY MUX41A; ARCHITECTURE ONE OF MUX41A IS BEGIN Y<=D0 WHEN A1='0' AND A0='0' AND EN='1' ELSE D1 WHEN A1='0' AND A0='1' AND EN='1' ELSE D2 WHEN A1='1' AND A0='0' AND EN='1'

VHDL语言设计四选一选择器

课程: 数字逻辑与数字系统VHDL语言设计四选一选择器实验报告 系:电子信息与计算机科学系 专业:自动化 班级:文自112—2班 姓名:桑*超 学号: 2011905192** 指导教师:徐红霞 学年学期:2012-2013学年(第一学期) 2012年12月15日

姓名: 桑*超班级: 文自112-2班学号: 2011905192** 试验: VHDL语言设计日期:2012.12.15 指导老师: 徐洪霞 一、实验报告的名称: VHDL语言设计 二、本次实验的目的: 1.掌握VHDL 语言的设计技巧 2.用VHDL语言设计四选一选择器 三、设计过程: 1.工程编译源:用VHDL语言编程。 2.功能仿真:将功能编译后的结果进行仿真。 3.引脚锁定:将个信号按要求分配到相应引脚. 4.物理实现:将结果下载到所悬着的器件中 四、写出源程序,画出防真波形图. library ieee; use ieee.std_logic_1164.all; entity mux4_1 is port( a,b,c,d : in std_logic; s : in std_logic_vector(1 downto 0); z : out std_logic ); end mux4_1; architecture one of mux4_1 is begin process(s,a,b,c,d) begin case s is when "00"=>z<=a;

when "01"=>z<=b; when "10"=>z<=c; when "11"=>z<=d; when others =>z<=null; end case; end process; end one ; 波形仿真图: 五、实验总结,主要包括实验中所犯错误,怎样改正等 1.在文件名必须与VHDL文件中的设计实体名保持一致。 2.设计前要先弄清楚四选一选择器的原理,然后根据原理设计程序。 3.编写程序时认真仔细,避免出现一些低级错误。

verilog数字钟代码全新

module digclk(clk,en,rst,dula,wela,s1,s2,s3,led,flag1,start1,flag2,start2,aled,s6,s4,s5); //s1调时s2调分s3调秒wela位码dula段码en使能clk时钟,flag1是跑表标志(拨上去就是显示跑表),置一为跑表功能,start1为跑表开始停止 //flag2为闹钟标志(拨上去就是设置闹钟时间)start2为闹钟开关aled闹钟提示灯input clk,rst,en,s1,s2,s3,flag1,start1,flag2,start2,s6,s4,s5; output [2:0] wela; output [7:0] dula; output led; output aled; reg led; reg aled; reg [7:0] cnt,dula; reg [2:0] wela; reg[7:0] hourh,hourl,minh,minl,sech,secl; reg[7:0] phourh,phourl,pminh,pminl,psech,psecl; reg[7:0] ahourh,ahourl,aminh,aminl,asech,asecl; reg[3:0] a; //a用于数码管显示的临时变量 (* synthesis, keep *) reg clk1; always @(posedge clk1) begin if(start2) begin if(hourh==ahourh&&hourl==ahourl&&minh==aminh&&minl==aminl&&sech==asech&&secl ==asecl) aled=1'b1; else aled=1'b0; end end always @(posedge clk1) //闹钟功能 begin if(flag2) begin if(!s4) //调节小时 begin /*if(ahourl==9)begin ahourl<=0;ahourh<=ahourh+1;end if(ahourh==2&&ahourl==3)begin ahourh<=0;ahourl<=0; end else ahourl<=ahourl+1;*/ ahourl<=ahourl+1; if(ahourl==3&&ahourh==2)begin ahourl<=0;ahourh<=0;end if(ahourl==9) begin ahourl<=0;ahourh<=ahourh+1;end;

串口通信Verilog代码

Verilog串口通信代码 module ck(clk,rst_n,rs232_rx,rs232_tx); input clk; // 50MHz主时钟 input rst_n; //低电平复位信号 input rs232_rx; // RS232接收数据信号 output rs232_tx; // RS232发送数据信号 wire bps_start; //接收到数据后,波特率时钟启动信号置位 wire clk_bps; // clk_bps的高电平为接收或者发送数据位的中间采样点 wire[7:0] rx_data; //接收数据寄存器,保存直至下一个数据来到 wire rx_int; //接收数据中断信号,接收到数据期间始终为高电平 //---------------------------------------------------- speed_select speed_select( .clk(clk), //波特率选择模块,接收和发送模块复用,不支持全双工通信 .rst_n(rst_n), .bps_start(bps_start), .clk_bps(clk_bps) ); my_uart_rx my_uart_rx( .clk(clk), //接收数据模块 .rst_n(rst_n), .rs232_rx(rs232_rx), .clk_bps(clk_bps), .bps_start(bps_start), .rx_data(rx_data), .rx_int(rx_int) ); my_uart_tx my_uart_tx( .clk(clk), //发送数据模块 .rst_n(rst_n), .clk_bps(clk_bps), .rx_data(rx_data), .rx_int(rx_int), .rs232_tx(rs232_tx), .bps_start(bps_start) ); endmodule module speed_select(clk,rst_n,bps_start,clk_bps);

四选一选择器

实验课程名称VHDL 四选一选择器 年级电技 111 专业电子科学与技术 学生姓名周伦稳 学号 1107010086 2013年12月

4选1数据选择器 1·设计背景和设计方案 1·1设计背景 该设计是以数字电子技术为基础,实现数据从四位数据中按照输入的信号选中一个数,来实现所期望的逻辑功能。 1·2设计方案 用拨码开关作四位数据及两位控制端的输入,LED 作输出,通过拨码开关组成控制输入端s1和s0不同组合,观察LED 与数据输入端a,b,c,d 的关系,验证四选一数据选择器设计的正确性。使用逻辑门电路与、或、非的组合来表达4选1数据选择器,通过控制输入的信号来控制输出的信号值。 其逻辑电路图如下: >11 1 3 & 2 1 1 D D D D A A Y 其示意框图如下: 其中输入数据端口为D0、D1、D2、D3,A 、A ’为控制信号,Y 为输出。 令AA ’=“00”时,输出Y=D0;

令AA ’=“01”时,输出Y=D1; 令AA ’=“10”时,输出Y=D2; 令AA ’=“11’ 时,输出Y=D3; D0 输入 D 1 Y 数据 D 2 D 3 A A ′ 真值表如下: 输入 输出 D A1 A0 Y D0 0 0 D0 D1 0 1 D1 D2 1 0 D2 D3 1 1 D3 2·方案实施 1)程序1 2·1·1 设计思路 4 选 1 数 据 选 择 器

四选一多路选择器设计时,定义输入S为标准以内漏记为STD_LOGIC,输出的信号Z的数据类型定义为2位标准逻辑矢量位STD_LOGIC_VECTOR( 1 DOWNTO 0 ).使用LIBRATY语句和USE语句,来打开IEEE库的程序包STD_LOGIC_1164.ALL。当输入信号时,程序按照输入的指令来选择输出,例如输入信号为“00”时,将a的值给z,进而输出z的值,输入信号为“11”是,将a的值给z,进而输出z的值。若输入信号是已经定义的四个信号之外的值时(即当IF条件语句不满足时),输出值为x,并将x的值给输出信号z。这样即可实现四选一数据选择的功能。 2·1·2 程序 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux41 is PORT (a,b,c,d :IN STD_LOGIC; s :IN STD_LOGIC_VECTOR(1 DOWNTO 0); z : OUT STD_LOGIC); END mux41; ARCHITECTURE one OF mux41 IS BEGIN PROCESS( s,a,b,c,d)

4选1及16选1的数据选择器

4选1的数据选择器 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity mux41 is port(a,b,c,d:in std_logic; s:in std_logic_vector(1 downto 0); y:out std_logic); end; architecture one of mux41 is begin y<= a when s=0 else b when s=1 else c when s=2 else d; end; 16选1数据选择器 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity mux161 is port(ain,bin,cin,din,ein,fin,gin,hin,iin,jin,kin,lin,min,nin,oin,pin:in std_logic; s1,s2:in std_logic_vector(1 downto 0); y:out std_logic); end; architecture one of mux161 is component mux41 port(a,b,c,d:in std_logic; s:in std_logic_vector(1 downto 0); y:out std_logic); end component; signal e,f,g,h:std_logic; begin u1:mux41 port map(ain,bin,cin,din,s1,e); u2:mux41 port map(ein,fin,gin,hin,s1,f); u3:mux41 port map(iin,jin,kin,lin,s1,g); u4:mux41 port map(min,nin,oin,pin,s1,h); u5:mux41 port map(e,f,g,h,s2,y); end;

8选1数据选择器74LS151

8选1数据选择器74L S15 1 74LS151为互补输出的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,为使能端,低电平有效。

[管理]四选一数据选择器的设计

[管理]四选一数据选择器的设计 XX大学 实习,实训,报告 实习,实训,名称: 电工电子实习 学院: 专业、班级: 指导教师: 报告人: 学号: 时间: 2011年7月1日至 2011年7月8日 实习主要内容: (1) 了解EDA技术的发展及应用 (2) 掌握VHDL语言的基础知识,熟悉在数字电路系统设计中VHDL程序设计 (3) 学习MAX+PLUS?软件的应用方法 (4) 应用EDA技术的设计方法完成4选1数据选择器的设计(采用原理图 和文本法两种方法实现),并在MAX+PLUS?上仿真主要收获体会与存在的问题: 通过课程设计,发现自己的很多不足,自己知识的很多漏洞,看到了自己的实 践经验还是比较缺乏,理论联系实际的能力还急需提高。同时也体会到设计课的重要性和目的性所在。同时这次实习也有很多收获,首先我们学会了MAX+PLUS?软件的应用方法,并且能够独立设计出原理图,其次本次设计课培养了我们实际操作能力,也培养了我们灵活运用课本知识,理论联系实际,独立自主的进行设计的能力。 指导教师意见:

建议成绩: 指导教师签字: 年月日 备注: 实习报告 1(目的 (1)通过实习掌握maxplus2软件的使用和VHDL语言的基础知识 (2)应用maxplus2完成四选一数据选择器的设计,并实现仿真。 2(内容 2.1 maxplus2的认识 (1) Max+plus?是Altera公司提供的FPGA/CPLD开发集成环境,Altera是世界上最大可编程逻辑器件的供应商之一。Max+plus?界面友好,使用便捷,被誉为业界最易用易学的EDA软件。在Max+plus?上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的设计环境,是设计者能方便地进行设计输入、快速处理和器件编程。 (2)、Max+plus?开发系统的特点很多,比如开放性的界面,编辑过程与结构无关,丰富的设计库,硬件描述语等。 (3)、Max+plus?软件具有开放核的特点,允许设计人员添加自己认为有价值的宏函数。Max+Plus II 工具软件,是现代最先进的仿真设计技术。在普通电脑上就可以操作,十分方便。 Max+Plus II 工具软件,是功能强大的EDA综合设计系统工具。 2.2 4选1数据选择器 (1)创建电路

相关文档
最新文档