PLD表决器设计:5人表决器的VHDL设计
三人表决器、五人表决器的实验报告

三人表决器、五人表决器的实验报告
一 实验目的
1.熟悉Quartus II 软件的基本操作
2.学习使用Verilog HDL 进行设计输入
3.逐步掌握软件输入、编译、仿真的过程 二 实验说明
三人表决器真值表:
输入信号
输出信号
B1 B2 B3 u 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1
1
1
1
逻辑表达式:U=
b1
b2 voter u
本次实验是要设计一个三人表决器。
该电路应有两个数据输入端口b1,b2,b3,电路的输出端口为voter(u
三实验要求
1、完成三人表决器的Verilog HDL程序代码输入并进行仿真
2、采用结构描述方式和数据流描述方式
3、完成对设计电路的仿真验证
四、实验过程
(1)三人表决器:
程序代码
仿真结果
五人表决器:
程序代码
仿真结果
五、实验体会
通过三人表决器和五人表决器的设计,使我们更加熟悉Quartus 软件进行数字系统设计的步骤,以及运用Verilog HDL进行设计输入,并掌握三人表决器和五人表决器的逻辑功能和设计原理,逐步理解功能仿真和时序仿真波形。
三人表决器和五人表决器大体相似,并没有太大的区别。
5人表决器实验报告

课程设计课程设计名称: EDA课程设计专业班级:电子信息科学与技术学生姓名: *学号: *指导教师: *课程设计时间:2013-2-25~2013-3-8电子信息科学与技术专业课程设计任务书1 设计任务及要求(1)按所布置的题目要求,独立完成全过程;(2)分模块层次化设计;(3)功能模块的底层文件必须用VHDL语言设计,顶层文件可用VHDL语言设计,也可以用原理图设计;(4)对整个系统进行编译、综合、仿真和验证;(5)在CPLD/FPGA实验开发系统试验箱上进行硬件验证。
2设计原理及总体框图表决器就是对于一个行为,由多个人投票,如果同意的票数过半,就认为此行为可行;否则如果否决的票数过半,则认为此行为无效。
本设计就是利用芯片ACEX1K系列的EP1K30TC144-3,拨挡开关模块和LED 模块来实现一个简单的五人表决器的功能。
拨挡开关模块中的键4~键8表示五个人,由5个人来投票,当同意的票数大于或者等于3人时,则认为同意;反之,当否决的票数大于或者等于3人时,则认为不同意。
实验中用5个拨挡开关来表示五个人,当对应的拨挡开关输入为‘1’时,表示此人同意;否则若拨挡开关输入为‘0’时,则表示此人反对。
表决的结果用一个LED(D8)表示,若表决的结果为同意,则D8被点亮,;否则,如果表决的结果为反对,则D8不会被点亮。
同时用七段显示数码管来显示赞成的人数和反对的人数。
程序流程图3 程序设计VHDL程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY bjq ISPORT(input:IN STD_LOGIC_VECTOR(4 DOWNTO 0);y:OUT STD_LOGIC;y1,y2:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END;ARCHITECTURE one OF bjq ISSIGNAL q:STD_LOGIC;SIGNAL q1,q2:STD_LOGIC_VECTOR(6 DOWNTO 0);BEGINPROCESS(input)VARIABLE cnt:INTEGER RANGE 0 TO 5;BEGINcnt:=0;FOR i IN 4 DOWNTO 0 LOOPIF input(i)='1' THENcnt:=cnt+1;END IF;END LOOP;CASE cnt ISWHEN 0 => q<='0';q1<="0111111";q2<="1101101";WHEN 1 => q<='0';q1<="0000110";q2<="1100110";WHEN 2 => q<='0';q1<="1011011";q2<="1001111";WHEN 3 => q<='1';q1<="1001111";q2<="1011011";WHEN 4 => q<='1';q1<="1100110";q2<="0000110";WHEN 5 => q<='1';q1<="1101101";q2<="0111111";WHEN OTHERS => q<='Z';q1<="ZZZZZZZ";q2<="ZZZZZZZ";END CASE;y<=q;y1<=q1;y2<=q2;END PROCESS;END;4 编译及仿真程序的编译及仿真5 硬件调试与结果分析本设计就是利用芯片ACEX1K系列的EP1K30TC144-3,管脚分配如下:实验符号对应附录符号引脚号Input0PIO1327Input1PIO1226Input2PIO1123Input3PIO1022Input4PIO921y10PIO4087y11PIO4188y12PIO4289y13PIO4390y14PIO4491y15PIO4592y16PIO4695y PIO2339y20PIO3273y21PIO3378y22PIO3479y23PIO3580y24PIO3681y25PIO3782y26PIO3883底层文件的编译及仿真没有遇到错误,倒是顶层文件的设计,编译,方正遇到了一些错误,不过经过我的细心查找都得到了圆满的解答,最值得引起的注意就是引脚的锁定,要注意锁定引脚的顺序,输入的引脚锁定比较随意,数码管的引脚锁定容不得丁点儿错误,第一次我就误将引脚的顺序逆序锁定了,这样在硬件调试的时候数码管显示的数字就和输入不一样。
精品基于Multisim的五人表决器设计

摘要:本次课程设计的目的是作出一个五人表决器,要求能实现五人表决器的基本功能。
采用了组合电路的设计方法,首先根据表决器的功能写出真值表,得出输出的表达式,再根据卡诺图,得到最简的表达式。
然后使用Multisim设计出原理图,仿真能得到正确的结果。
关键词:五人表决器、74LS283N、7485N、译码显示、表决一、设计目的:(1)、熟悉集成电路的引脚安排。
(2)、掌握Multisim的基本用法。
(3)、掌握74LS283N、7485N等芯片的逻辑功能和译码显示器的使用方法。
(4)、熟悉五人表决器的组成和工作原理。
(5)、熟悉五人表决器的设计。
二、设计思路:(1)、设计表决器的工作电路。
(2)、设计输入电路。
(3)、设计清零电路。
(4)、设计显示输出电路。
三、设计过程:3.1,整体设计思路本次设计的五人表决器根据其实现的功能要求,大概可以分为四大方面:一是5人的按键选择;二是74LS283芯片,对输入电平进行全加;三是7485N芯片,对其进行比较;四是译码显示器对逻辑运算后的结果进行输出显示,完成五人表决器的功能。
根据以上的整体设计思路,五人表决器可以利用以下方框图,作形象的展现。
其总体方框图如图1:——————图1,五人表决器框图结合以上框图,综述如下:第一步:按键选择。
五人评委根据意愿按下按键,即输入逻辑电位。
第二步:全加。
有关芯片对所输进的逻辑电位,进行译码。
第三步:逻辑运算。
对译码后芯片的输出进行逻辑运算。
第四步:显示输出。
将运算结果通过译码显示器输出,显示表决结果。
3.2,各部分的具体电路设计1、按键选择部分的电路设计五人多数表决,只要在规定时间内,赞成人数大于或等于三,则表决通过。
因此,只需将每位表决人的结果相加,判断结果值,然后再将结果值显示出来既可以得到设五个开关作为表决器的五个输入变量,输入变量为逻辑“1”时,表示表决者“赞成”;输入变量为“0”时,表示表决者“不赞成”。
输出逻辑“1”时,表示表决“通过”;输出逻辑“0”时,表示表决“不通过”。
五人人表决器数字电路

Guangxi University of Science andTechnology数字电子技术基础课程设计课程名称:数字电子技术课题名称: 5人表决器姓名:庞兴文学号: 201200402009院系:计算机学院通信工程专业专业班级:通信121指导教师:张雅兰完成日期: 2014年7月10日目录一.设计任务 (3)二.设计要求 (3)三.设计目的 (3)四.设计思路 (4)五.设计过程 (4)六.设计体会 (10)一、设计任务①设计一个五人表决器。
②通过灯亮来代表表决是否通过二、设计要求①学习使用八选一数据选择器芯片74LS151进行控制。
②当有三个或三个以上的人同意则通过,少于三个同意则被否决。
③用红灯表示五人中亮灯的情况,用绿灯亮表示通过。
三、设计目的本课程设计是在前导验证性认知实验基础上,进行更高层次的命题设计实验,要求学生在教师指导下独立查阅资料、设计、安装和调试特定功能的电子电路。
培养学生利用模拟、数字电路知识,解决电子线路中常见实际问题的能力,使学生积累实际电子制作经验,目的在于巩固基础、注重设计、培养技能、追求创新、走向实用用已学过的知识和对数字电子技术的基本理论,基本概念,基本方法和单元电路,逻辑部件的深入认识,而拓宽思路,扩大视野,进一步巩固,扩充所学知识,提高分析问题和解决问题的能力。
(1)熟悉集成电路的引脚及安排。
(2)掌握各芯片的逻辑功能及控制方法。
(3)学习multisim11.0仿真。
(4)学习Altium designer软件四、设计思路(1)设计表决工作电路(2)设计不同开关控制数据选择器(3)设计输出显示电路五、设计过程5.1、方案论证图5.1 五人表决器的结构框图1. 当按下开关时,代表同意赞成,开关没有按下去时,表示不赞成。
评委按照自己的意愿投票,选择是否按下开关,即选择逻辑电位。
2. 对逻辑电位进行数据选择。
3. 对选择后芯片的输出进行显示。
5.2、系统原理五人表决器,只要赞成人数大于或等于三,则表决通过。
5人表决开关电路

程序:
#include<stdio.h>
int vote(int a,int b,int c,int d,int e)
{
if(a&&b&&c||a&&b&&d||a&&b&&e||a&&c&&d||a&&c&&e||a&&d&&e||b&&c&&d||b&&c&&e||b&&d &&e||c&&d&&e)
return 1;
else
return 0;
}
int main()
{
int a,b,c,d,e;
printf("输入五个人的表决意愿(0或1,空格分开):");
scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
if(vote(a,b,c,d,e))
printf("表决通过!\n");
else
printf("表决不通过!\n");
}
【实验结果分析】
【实验心得】
通过这次五人表决开关电路的实验,加深了我对五个基本联结词(否定、合取、析取、条件、双条件)的理解、基本掌握了利用基本等价公式化简公式的方法。
为今后的学习打下了扎实的基础。
实验2 五人表决器(无源码)

-1-
制作人:程鸿亮
长安大学 电子与控制工程学院 电子科学与技术系
赞成 票数
反对 票数
清零 锁存
4. 用实验平台的 LED 发光阵列实现表决结果和每人的表决信号:
⒈⒉⒊⒋⒌⒍⒎⒏ ⒐⒑⒒⒓⒔⒕⒖⒗
注:要求 LED1 显示判决赞成(led_agr)信号,LED8 显示判决反对(led_opp)信号。 LED3、LED4、LED5 同时显示判决结束信号。LED10、LED11、LED12、LED13、 LED14 显示 5 人的表决信号。
长安大学 电子与控制工程学院 电子科学与技术系
通过对话框中的 Hardware Setup 按钮,选择下载设备:USB-Blaster。参照上图所 示的选项,点击 Start 完成下载。 五、实验结果
以下是对参考代码的编译下载后的部分图例:
说明:初始状态中,分别显示同意和反对票数的数码管 6 和数码管 5 输出“FF”, 表示可以进行新的一次表决操作。此时拨动开关有两个处于高电平(同意), LED14、LED13 对应被点亮。
I/O31
D9
I/O32
D8
I/O33
D7
I/O34
C9
I/O35
H7
I/O36
Y7
I/O37
Y13
I/O38
U20
I/O39
K20
引脚名称 I/O40 I/O41 I/O42 I/O43 I/O44 I/O45 I/O46 I/O47 I/O48 I/O49 PIO60 PIO61 PIO62 PIO63 PIO64 PIO65 PIO66 PIO67 PIO68 PIO69 PIO70 PIO71 PIO72 PIO73 PIO74 PIO75 PIO76 PIO77 PIO78 PIO79
五人表决电路课程设计

电子技术课程设计报告书课题名称 五人表决电路课程设计姓 名 ***** 学 号 *****院、系、部 物理与电信工程系 专 业 电子信息工程指导教师 ********年**月**日※※※※※※※※※ ※※※※ ※※**级电子信息工程专业电子技术课程设计五人表决电路课程设计1.设计目的(1)熟悉集成电路的引脚排列。
(2)掌握各芯片的逻辑功能及使用方法。
(3)了解表决器的工作原理。
2.设计思路(1)设计表决器电路。
(2)设计译码电路。
(3)设计显示电路。
3.设计过程3.1方案论证图3.1.1 五人表决电路方框图通过主体电路的74LS138译码器和一些组合逻辑电路,将各组赞成人数统计直接转换成二进制输出信号后,再用一个全加功能电路,把所有输出信号按特定的顺序相加,最后经过一个4511译码器和一个共阴极七段显示管显示出同意的人数。
3.2.总电路设计3.2.1.表决电路图3.2.1主题表决器电路该电路完成功能:用芯片74lLS38译码器将特殊信号(专家组)进行处理,然后通过组合逻辑门电路对信号进行处理。
最后通过红、绿二极管输出电路。
把译码所得到的二位二进制数分为高位和低位,分别记为A1、A2、B1、B2。
把A1、B1和A2、 B2进行分开处理。
这过程分三种情况:①当专家组没人同意时(即A1、B1都为0时)不管代表组是否有人同意(即A2、 B2是否为0),都亮红灯(表示会议否决),②当专家组只有一人同意且代表组无人同意时(即A1B1=01且A2B2=00),亮红灯。
其余的各种情况都亮绿灯(表示会议通过)。
OE1、OE2A、OE2B为使能控制端,起到控制译码器是否能进行译码的作用。
只有OE1为高电平,OE2A、OE2B均为低电平时,才能进行译码,否则不论输入为何值,每个输出端均为1 译码器可以将输入代码的状态翻译成相应的输出信号,以高、低电平的形式在各自的输出端口送出,以表示其意愿。
译码器有多个输入端和多个输出端。
单片机课程设计报告(五人表决器)

目录一、方案设计 (2)二、硬件电路设计 (2)三、软件设计说明 (6)四、程序清单 (7)五、制作调试说明 (12)六、操作使用说明 (13)七、总结 (13)单片机课程设计一、方案设计1、设计题目:5人表决器2、设计要求:1)、可供5—7个人进行表决,每个人有一个“同意”和一个“反对”按键,故一个人需要两个按键,表决时两个键先按下的一个有效,同时按下则表示无效,每次表决每个按键只能是第一次按下的有效,多按无效,用单片机设计表决器是硬件电路与软件设计相结合的一种设计,因此在硬件电路只能实现按键的按下与释放,不能智能的实现检测按键被按下几次,则可用软件设计来实现其功能。
2)会议主持人可利用按键控制表决的开始与结束,点亮黄灯用于显示表决开始,熄灭黄灯表示结束,并将表决结果用红灯与绿灯显示。
当不相等时,“同意”多于“反对”点亮绿灯,“同意”少于“反对”点亮红灯。
3)在实现上述功能的基础上增加“同意”数和“反对”数的显示。
二、硬件电路设计1、硬件设计思路:此次设计的题目是5人表决器,分析得设计的硬件电路选用P1口与P2口作为同意与反对按键的输入端。
又表决的开始与结束是由主持人来控制的,因此需要两个按键来表示表决的开始与结束,因此可采用外部中断0与外部中断1来控制表决的开始于结束。
故设计总共需要按键12个。
设计要求中需要四盏灯,分变为一个黄灯,一个绿灯和二个红灯,三盏灯用于输出显示,因此也可以征用单片机的I/O口,由于P1口与P2口作为同意与反对按键的输入端且P0口当做输出端口时可以不用接上拉电阻,因此可将三个显示灯接在P0口用于显示表决的结果。
还有一盏红灯用来做电源指示灯。
2、元器件参数确定:设计要求中需要三盏灯(黄灯,绿灯和红灯)用于输出显示,选用P0口的3个端口与显示灯相连接用于输出,由于输出端口输出的高电平一般为5V,而发光二极管允许的最大电流为5mA,因此需要用到限流电阻,发光二极管可降2V的电压,则限流电阻上的压降为3V,那么限流电阻的最小阻值为R=3V/5mA=600欧姆,由于输出的高电平不是5V,故用510欧姆的限流电阻。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
"10" when "11100", "10" when "11010", "10" when "10110", "10" when "01110", "10" when "11001", "10" when "10011", "10" when "01111", "10" when "10111", "10" when "11011", "10" when "11101", "10" when "11110", "10" when "11111", "01" when others; END concurrent;
设计思路: 设计思路:
五人多数表决,只要在规定时间内,赞成人数大 五人多数表决,只要在规定时间内, 于或等于三,则表决通过。 于或等于三,则表决通过。 因此,只需将每位表决人的结果相加, 因此,只需将每位表决人的结果相加,判断结果 值。设五个开关作为表决器的五个输入变量,输入变 设五个开关作为表决器的五个输入变量, 量为逻辑“ 时 表示表决者“赞成” 量为逻辑“1”时,表示表决者“赞成”;输入变量为 “0”时,表示表决者“不赞成”。输出逻辑“1”时, 时 表示表决者“不赞成” 输出逻辑“ 时 表示表决“通过” 输出逻辑“ 时 表示表决“ 表示表决“通过”;输出逻辑“0”时,表示表决“不 通过” 当表决器的五个输入变量中有 个以上 个以上( 通过”。当表决器的五个输入变量中有3个以上(含3 个)为“1”时。则表决器输出为“1”;否则为“0”。 时 则表决器输出为“ ;否则为“ 。
else y<=’0’; end if;
END PROCESS; end aa;
方案七:设计一个 人表决器。要求: 设计一个7人表决器 要求: 人表决器。
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; ENTITY vote7 IS PORT ( men : IN std_logic_vector(6 downto 0); pass,stop: buffer std_logic); END vote7;
architecture aa of bj is begin PROCESS (a) variable x:std_logic_vector(2 downto 0); --定义了中间变量 定义了中间变量 BEGIN x:="000"; --参数初始化 参数初始化 for i in 0 to 4 loop if(a(i)='1') then x:=x+1; else x:=x+0; end if; end loop; if (x>3) then y<=‘1’; --如果多于 人表决同意,有效! 如果多于3人表决同意 如果多于 人表决同意,有效!
方案六:设计一个五人表决器。要求:对某 设计一个五人表决器。要求:
一个问题有三人或三人以上表示同意时,表决 一个问题有三人或三人以上表示同意时, 三人或三人以上表示同意时 此程序编译通过) (此程序编译通过) 器发出同意的信号。 器发出同意的信号。
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity bj is port(a:in std_logic_vector(4 downto 0); y:out std_logic); end bj;
(此程序编译通过) 此程序编译通过)
ARCHITECTURE behave OF vote7 IS BEGIN stop<=not pass; --行为级的描述 行为级的描述 PROCESS (men) variable temp:std_logic_vector(2 downto 0); BEGIN temp:="000";
管脚说明: 管脚说明:
FF:一维数组FF用来表示五位表决者; :一维数组 用来表示五位表决者 用来表示五位表决者; QQ:表决最终是否通过(‘1’为“通过”,‘0’为 :表决最终是否通过( 为 通过” 为 “未通过”); 未通过” QALL:表决通过的人数; :表决通过的人数; SHIJIAN:用来显示倒计时; :用来显示倒计时; FUWEI:主持人复位键,用来系统复位; :主持人复位键,用来系统复位; KAISHI:主持人控制键,用来启动表决; :主持人控制键,用来启动表决; CLK:系统时钟。 :系统时钟。
方案二:设计一个五人表决器。 设计一个五人表决器。
1)五人多数表决逻辑:多数通过; )五人多数表决逻辑:多数通过;
(此程序编译通过) 此程序编译通过)
2)在主持人控制下,10秒内表决有效; )在主持人控制下, 秒内表决有效 秒内表决有效; 3)采用数码管显示表决 秒倒计时;--?不完善? )采用数码管显示表决10秒倒计时 表决 秒倒计时; ?不完善? 4)表决结束后用发光二极管及数码管显示表决结果, )表决结束后用发光二极管及数码管显示表决结果, 数码管显示结果形式:通过,不通过; 数码管显示结果形式:通过,不通过; 5)设主持人控制键,复位键: )设主持人控制键,复位键: 控制键:启动表决; 控制键:启动表决; 复位键:系统复位。 复位键:系统复位。 6)自制实验方案,完成设计任务。 )自制实验方案,完成设计任务。
ELSIF (CLK'EVENT AND CLK='1') THEN IF (KAISHI='1') THEN IF (NOT SUO) THEN IF SHIJIAN="0000" THEN SUO:=TRUE; FOR N IN 1 TO 5 LOOP
的
SUM:=FF(N)+SUM;
END LOOP; ELSE SHIJIAN<=SHIJIAN-1; END IF; END IF; --倒计时 倒计时
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; Entity BJQ is port(sw:in std_logic_vector(4 downto 0); L:out std_logic); End BJQ;
源程序: 源程序:
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_ARITH.all; use ieee.std_logic_UNSIGNED.all;
ENTITY BIAOJUE IS PORT( FF:IN STD_LOGIC_VECTOR(1 TO 5); FUWEI,KAISHI,CLK:IN STD_LOGIC; SHIJIAN:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); QQ:OUT BIT; QALL:OUT STD_LOGIC_VECTOR(3 DOWNTO 1) ); END BIAOJUE;
architecture aa of bj is begin PROCESS (a) variable x:std_logic_vector(2 downto 0); --定义了中间变量 定义了中间变量 BEGIN x:="000"; --参数初始化 参数初始化 for i in 0 to 6 loop if(a(i)='1') then x:=x+1; else x:=x+0; end if; end loop; if (x=“011”) then x:=x+1; --如果正好 人表决同意,应当是有效的! 如果正好3人表决同意 如果正好 人同意 --?如果正好是 人表决同意,应当是有效的! 人同意? y<=x(2); ?如果正好是3人同意? END PROCESS; else x:=x+0; end end if; aa; y<=x(2); --如果多于 人表决同意,x(2)应当是’1’! 如果多于3人表决同意 应当是’ ! 如果多于 人表决同意, 应当是 END PROCESS; end aa;
for i in 0 to 6 loop if(men(i)='1') then temp:=temp+1; else temp:=temp+0; end if; end loop; 个人表决该位为1 pass<=temp(2); --4个人表决该位为 !? 个人表决该位为 END PROCESS; END behave; --结束行为级的描述 结束行为级的描述
ARCHITECTURE FUNG OF BIAOJUE IS BEGIN PROCESS(FF,CLK,KAISHI,FUWEI) VARIABLE SUO:BOOLEAN; VARIABLE SUM:STD_LOGIC_VECTOR(1 TO 3); BEGIN IF (FUWEI='0') THEN QQ<='0'; SHIJIAN<="1010"; SUO:=FALSE; SUM:="000"; QALL<IF (SUM >= 3) THEN QQ<='1'; ELSE QQ<='0'; END IF; END IF; END IF; END PROCESS; END FUNG;