EDA 九人表决器
- 格式:doc
- 大小:25.50 KB
- 文档页数:2
实验一五人表决器设计一、实验目的1 加深对电路理论概念的理解3 加深计算机辅助分析及设计的概念4 了解及初步掌握对电路进行计算机辅助分析的过程二、实验要求制作一个五人表决器,共五个输入信号,一个输出信号。
若输入信号高电平数目多于低电平数目,则输出为高,否则为低。
三、实验原理根据设计要求可知,输入信号共有2^5=32种可能,然而输出为高则有15种可能。
对于本设计,只需一个模块就能完成任务,并采用列写真值表是最简单易懂的方法。
四、计算机辅助设计设A,B,C,D,E引脚为输入引脚,F为输出引脚。
则原理图如1所示图1.1 五人表决器原理图实验程序清单如下:MODULE VOTEA,B,C,D,E PIN;F PIN ISTYPE 'COM';TRUTH_TABLE([A,B,C,D,E]->[F])[0,0,1,1,1]->[1];[0,1,1,1,0]->[1];[0,1,0,1,1]->[1];[0,1,1,0,1]->[1];[1,0,1,1,1]->[1];[1,1,0,1,1]->[1];[1,1,1,0,1]->[1];[1,1,1,1,0]->[1];[1,1,1,0,0]->[1];[1,1,0,1,0]->[1];[1,1,1,1,1]->[1];[1,1,0,0,1]->[1];[1,0,0,1,1]->[1];[1,0,1,0,1]->[1];[1,0,1,1,0]->[1];END五、实验测试与仿真根据题目要求,可设输入分别为:0,0,0,0,0;1,1,1,1,1;1,0,1,0,0;0,1,0,1,1。
其测试程序如下所示:MODULE fivevoteA,B,C,D,E,F PIN;X=.X.;TEST_VECTORS([A,B,C,D,E]->[F])[0,0,0,0,0]->[X];[1,1,1,1,1]->[X];[1,0,1,0,0]->[X];[0,1,0,1,1]->[X];END测试仿真结果如图1.2所示:图1.2 五人表决器设计仿真图可知,设计基本符合题目要求。
eda表决器课程设计一、课程目标知识目标:1. 学生能理解EDA(电子设计自动化)表决器的原理与功能;2. 学生能掌握表决器的电路设计,包括门电路的连接和逻辑功能的实现;3. 学生能了解数字电路基础知识,如逻辑门、触发器等,并与表决器的设计相结合。
技能目标:1. 学生能够运用所学知识,设计简单的EDA表决器电路;2. 学生能够运用相关软件工具进行电路仿真,观察和分析表决器的运行结果;3. 学生能够通过小组合作,解决实际设计中遇到的问题,提高团队协作能力。
情感态度价值观目标:1. 培养学生对电子设计自动化技术的兴趣,激发学习热情;2. 培养学生严谨、认真的学习态度,提高学生的自主学习能力;3. 培养学生关注社会、科技发展的意识,树立创新精神。
课程性质:本课程为电子技术课程,结合实际操作,注重培养学生的实践能力和创新精神。
学生特点:学生处于高年级阶段,具备一定的电子技术基础知识和实践操作能力。
教学要求:结合学生特点,课程要求理论与实践相结合,注重启发式教学,提高学生的分析问题、解决问题的能力。
通过本课程的学习,使学生能够将所学知识应用于实际工程设计中,培养具备创新精神和实践能力的优秀电子技术人才。
二、教学内容本课程教学内容主要包括以下几部分:1. 电子设计自动化(EDA)技术概述:使学生了解EDA技术的基本概念、发展历程和应用领域,为后续学习表决器设计打下基础。
2. 逻辑门电路及其应用:介绍基本逻辑门电路(如与门、或门、非门等)的原理、功能和应用,为学生设计表决器电路提供必要的知识储备。
3. 组合逻辑电路设计:讲解组合逻辑电路的设计方法,使学生掌握表决器电路的设计步骤,包括逻辑表达式、真值表、逻辑图的绘制。
4. 表决器电路设计:详细讲解表决器的工作原理、设计方法,引导学生通过实际操作,设计出符合要求的表决器电路。
5. 电路仿真与测试:教授学生如何运用相关软件工具进行电路仿真,观察和分析表决器的运行结果,找出并解决设计中可能存在的问题。
6-1 在Verilog设计中,给时序电路清零(复位)有两种不同方法,它们是什么,如何实现?答:同步清零、异步清零,在过程语句敏感信号表中的逻辑表述posedge CLK用于指明正向跳变,或negedge用于指明负向跳变实现6-2 哪一种复位方法必须将复位信号放在敏感信号表中?给出这两种电路的Verilog 描述。
答:异步复位必须将复位信号放在敏感信号表中。
同步清零:always @(posedge CLK) //CLK上升沿启动Q<=D; //当CLK有升沿时D被锁入Q异步清零:always @(posedge CLK or negedge RST) begin //块开始if(!RST)Q<=0; //如果RST=0条件成立,Q被清0else if(EN) Q<=D;//在CLK上升沿处,EN=1,则执行赋值语句end//块结束6-3 用不同循环语句分别设计一个逻辑电路模块,用以统计一8位二进制数中含1的数量。
module Statistics8(sum,A); output[3:0]sum;input[7:0] A;reg[3:0] sum;integer i;always @(A)beginsum=0;for(i=0;i<=8;i=i+1) //for 语句if(A[i]) sum=sum+1;else sum=sum;endendmodule module Statistics8(sum,A); parameter S=4;output[3:0]sum;input[7:0] A;reg[3:0] sum;reg[2*S:1]TA;integer i;always @(A)beginTA=A; sum=0;repeat(2*S)beginif(TA[1])sum=sum+1;TA=TA>>1;endendendmodulerepeat循环语句for循环语句module Statistics8(sum,A);parameter S=8;output[3:0]sum;input[7:0] A;reg[S:1] AT;reg[3:0] sum;reg[S:0] CT;always @(A) beginAT={{S{1'b0}},A}; sum=0; CT=S;while(CT>0) beginif(AT[1])sum=sum+1;else sum=sum;begin CT= CT-1; AT=AT>>1; end end endendmodule6-3 用不同循环语句分别设计一个逻辑电路模块,用以统计一8位二进制数中含1的数量。
实验一组合逻辑器件设计一、实验目的1、通过一个简单的3-8译码器的设计,掌握组合逻辑电路的设计方法。
2、掌握组合逻辑电路的静态测试方法。
3、初步了解QUARTUS II原理图输入设计的全过程。
二、实验主要仪器与设备1、输入:DIP拨码开关3位。
2、输出:LED灯。
3、主芯片:EP1K10TC100-3。
三、实验内容及原理三-八译码器即三输入,八输出。
输出与输入之间的对应关系如表1-1-1所示。
表1-1 三-八译码器真值表四、预习要求做实验前必须认真复习数字电路中组合逻辑电路设计的相关内容(编码器、译码器)。
五、实验步骤1、利用原理图设计输入法画图1-1-1。
2、选择芯片ACEX1K EP1K10TC100-3。
3、编译。
4、时序仿真。
5、管脚分配,并再次编译。
6、实验连线。
7、编程下载,观察实验结果。
图1-1 三-八译码器原理图六、实验连线用拨码开关的低三位代表译码器的输入(A,B,C),将之与EP1K10TC100-3的管脚相连;用LED灯来表示译码器的输出(D0~D7),将之与EP1K10TC100-3芯片的管脚相连。
拨动拨档开关,可以观察发光二极管与输入状态的对应关系同真值表中所描述的情况是一致的。
七、实验结果八、思考题在输入端加入使能端后应如何设计?附:用硬件描述语言完成译码器的设计::LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY T2 ISPORT(A: IN STD_LOGIC_VECTOR(2 DOWNTO 0);Y: OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END T2;ARCHITECTURE A OF T2 ISBEGINWITH A SELECTY <= "00000001" WHEN "000","00000010" WHEN "001","00000100" WHEN "010","00001000" WHEN "011","00010000" WHEN "100","00100000" WHEN "101","01000000" WHEN "110","10000000" WHEN OTHERS;END A;实验二组合电路设计一、实验目的1、掌握组合逻辑电路的设计方法。
课程设计课程名称硬件描述语言与EDA技术课程设计题目名称学生学院材料与能源学院专业班级学号学生姓名指导教师陈先朝2017年6 月10日目录一、设计目的 (1)二、设计内容 (1)三、设计思路 (1)四、Verilog源程序 (1)五、管脚分配 (3)六、总结设计与体会 (3)七、参考文献 (4)七人表决器设计一、设计目的1.熟悉Quartus II软件的使用。
2..熟悉七人表决器的工作原理3.熟悉EDA开发的基本流程。
二、设计内容基础功能:设计一个七人表决器,当赞成人数大于等于四时显示表决通过,同时分别将投票中赞成人数和反对人数在数码管显示出来。
新加:清零键和通过时蜂鸣器响。
三、设计思路(1)使用一个模块完成所有功能。
(2)用alawys语句检测赞同和反对人数信号(A和B),再用两个独立共阴极数码管显示人数0到7。
(3)用if语句判断总人数是否超出7人(s)(4)用另一个clk实现蜂鸣器,因为原来的clk信号频率过低。
四、Verilog源程序module biaojue(clk_1,clk_2,yes,no,clear,buzz,A,B,result);input clk_1,clk_2,yes,no,clear;reg [4:0] s1,s2,s;output reg [7:0] A,B;output reg result,buzz;always @(posedge clk_1)begins=s1+s2;if(clear) begin s1=0; s2=0; result=0; endelse if (s>4'b0111) begin s1=0; s2=0; result=0; endelse if (yes) s1=s1+1;else if (no) s2=s2+1;else if (s1>=4'b0100) begin result=1 ; endelse begin s1=s1; s2=s2; result=result; endendalways @(clk_2)begin if (result) buzz=~clk_2;endalways @(s1)begincase(s1)4'b0000:A=8'h3f;4'b0001:A=8'h06;4'b0010:A=8'h5b;4'b0011:A=8'h4f;4'b0100:A=8'h66;4'b0101:A=8'h6d;4'b0110:A=8'h7d;4'b0111:A=8'h07;default:A=8'h00;endcaseendalways @(s2)begincase(s2)4'b0000:B=8'h3f;4'b0001:B=8'h06;4'b0010:B=8'h5b;4'b0011:B=8'h4f;4'b0100:B=8'h66;4'b0101:B=8'h6d;4'b0110:B=8'h7d;4'b0111:B=8'h07;default:B=8'h00;endcaseendendmodule五、管脚分配错误!六、总结设计与体会七、参考文献(1)自编指导书;(2)Verilog与EDA相关教程:a)王金明等编著,EDA技术与Verilog HDL设计,电子工业出版社,2013年;b)艾明晶编著,EDA技术实验教程,清华大学出版社,2014年;c)潘松等编著,EDA技术与Verilog HDL ,清华大学出版社,2013年;d)张春晶等编著,现代数字电子技术及Verilog设计,清华大学出版社,2014年;e)刘靳等编著,Verilog程序设计与EDA ,西安电子科技大学出版社,2012年;f)刘福奇主编,Verilog HDL 应用程序设计实例精讲,电子工业出版社,2012年;g)周润景等主编,基于Quartus Ⅱ的数字系统Verilog HDL设计实例详解,电子工业出版社,2010年。
EDA电路设计结课论文(2014-2015学年第一学期)论文题目:万人计数表决显示器机械与车辆学院二O 一四年十二月第一部分前言内容提要电子科学的应用已经渗透入我们的日常生活之中,计数器、数码管显示器、分频器、比较器在我们的生活之中随处可见。
本次课程设计是EDA电路设计,通过将多种基本功能元器件组合在一起,实现计数、表决的功能。
应用Quartus II 9.1软件,用VHDL语言编译完成课程设计,并通过时序仿真波形图验证其正确性。
现实生活中参加表决的人数往往都是上百上千人,甚至上万人。
万人表决计数器就是模拟现实中这种人数较多的情况下对表决的人数进行统计、比较和显示的一种运算器。
关键词:表决计数显示器时序仿真波形图 Quartus II 9.1一、设计思路万人表决计数器还具备了异步复位,使能端功能。
在规定的时间能进行投票表决,到达规定时间按下使能端,不能再进行投票。
若要重新投票或者对另一项决策进行投票则按下复位键,对统计结果进行清零。
第二部分 正文二、设计原理和内容万人表决器,用时钟时钟信号中“1”代表投赞成票的人数,以时钟信号中“0”代表投反对票的人数。
先通过分频器对时钟信号进行调整,通过十进制的万位计数器,计算投赞成票的人数,然后,将计算的人数通过译码管显示出来,最后,将计数得到的人数通过比较器,比较是否超过半数,如果超过半数则显示通过“1”,如果没有超过半数就显示不通过“0”。
原理框架图三、实验程序分析1、10进制计数器LIBRARY IEEE; --打开ieee 库USE IEEE.STD_LOGIC_1164.ALL; --使用库中std_logic_1164所有内容USE IEEE.STD_LOGIC_UNSIGNED.ALL; --使用库中STD_LOGIC_UNSIGNED 所有内容 ENTITY counter IS --定义实体counter ,进行信号端口定义 PORT( RST,EN,CLK:IN STD_LOGIC; --输入信号引脚端OC:OUT STD_LOGIC; --OC 进位输出信号引脚端Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));--输出信号引脚端END counter; --结束实体counterARCHITECTURE bhv OF counter IS --定义结构体bhv ,描述逻辑功能和电路结构 BEGIN PROCESS(RST,EN,CLK) --敏感信号VARIABLE TMP:STD_LOGIC_VECTOR(3 DOWNTO 0); --设置6位移位数据输出信号STD时序电路 计数器 分频器 比较器 显示译码器 结果显示 结果显示图一BEGINIF RST='1' THEN TMP:="0000";OC<='0'; --RST=‘1’时,数据清零ELSIF EN='0' THEN NULL; --EN=‘0’时,不进行任何操作ELSIF CLK'EVENT AND CLK='1' --时钟信号上升沿触发THEN IF TMP=9 THEN OC<='1'; --如果TMP=‘9’时,进位OC赋值“1”TMP:="0000"; --同时TMP 赋值为“0000”ELSE TMP:=TMP+1; --如果TMP不等于“9”时,TMP加1,OC<='0'; --同时进位OC赋值“0”END IF; --结束IF语句END IF;--结束IF语句Q<=TMP; --将TMP计算结果赋值给QEND PROCESS; --结束进程END bhv; --结束结构体bhv------------------引用程序①,程序②进行累加进位计数--------------- ②LIBRARY IEEE; --打开ieee库USE IEEE.STD_LOGIC_1164.all; --使用库中std_logic_1164所有内容USE IEEE.STD_LOGIC_UNSIGNED.all; --使用库中STD_LOGIC_UNSIGNED所有内容ENTITY jsq10 ISPORT(RST,EN,CLK:IN STD_LOGIC;Q1,Q2,Q3,Q4,Q5,Q6:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));end jsq10; --定义实体clkdiv,进行信号端口定义RET,EN CLK为输入引脚端ARCHITECTURE BHV of jsq10 is --定义结构体BHV和信逻辑号,描述逻辑功能和电路结构SIGNAL OC2,OC3,OC4,OC5,OC6,OC7:STD_LOGIC;component counterPORT( RST,EN,CLK:IN STD_LOGIC; --定义上一个封装元件的端口OC:OUT STD_LOGIC; --定义上一个封装元件的输入端口Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); --定义上一个封装元件的输出端口END component; --结束对封装元件端口的定义程序beginu1:counter PORT MAP(RST=>RST,EN=>EN,CLK=>CLK,Q=>Q1,OC=>OC2);--将封装元件运算后的输出端Q赋给Q1,进位端OC赋给OC2,使能和复位端不变u2:counter PORT MAP(RST=>RST,EN=>EN,CLK=>OC2,Q=>Q2,OC=>OC3);--将封装元件运算后的输出端Q赋给Q2,进位端OC赋给OC3,时钟信号赋予CO2u3:counter PORT MAP(RST=>RST,EN=>EN,CLK=>OC3,Q=>Q3,OC=>OC4);--将封装元件运算后的输出端Q赋给Q4,进位端OC赋给OC5,时钟信号赋予CO4u4:counter PORT MAP(RST=>RST,EN=>EN,CLK=>OC4,Q=>Q4,OC=>OC5);u5:counter PORT MAP(RST=>RST,EN=>EN,CLK=>OC5,Q=>Q5,OC=>OC6);u6:counter PORT MAP(RST=>RST,EN=>EN,CLK=>OC6,Q=>Q6,OC=>OC7);END BHV; --结束结构体BHV******************************************************************************* ******************************************************************************* 2、64分频器LIBRARY IEEE; --打开ieee库USE IEEE.STD_LOGIC_1164.ALL; --使用库中std_logic_1164所有内容USE IEEE.STD_LOGIC_ARITH.ALL; --使用库中STD_LOGIC_ARITH所有内容USE IEEE.STD_LOGIC_UNSIGNED.ALL; --使用库中STD_LOGIC_UNSIGNED所有内容ENTITY clkdiv IS --定义实体clkdiv,进行信号端口定义PORT( clk : IN STD_LOGIC; --clk时钟信号输入引脚端clk_div16 : OUT STD_LOGIC --clk_div16输出引脚端);END ENTITY clkdiv; --结束实体clkdivARCHITECTURE rtl OF clkdiv IS --定义结构体rtl,描述逻辑功能和电路结构SIGNAL count : STD_LOGIC_VECTOR(6 DOWNTO 0);BEGIN --设置6位移位数据输出信号countPROCESS(clk) --敏感信号CLKBEGINIF(clk'event AND clk='1')THEN --CLK为上升沿有效IF(count="111111")THEN --IF语句判决count是否等于111111count<=(OTHERS=>'0'); --当count=111111是,count清零ELSE --count不等于11111是,count加1count<=count+1;END IF; --结束IF语句END IF; --结束IF语句END PROCESS; --结束进程clk_div16<=count(5); --将count的値赋予clk_div16END ARCHITECTURE rtl; --结束结构体r t1******************************************************************************* ******************************************************************************* 3、7位数码管显示译码器LIBRARY IEEE; --打开ieee库USE IEEE.STD_LOGIC_1164.ALL; --使用库中std_logic_1164所有内容ENTITY YMQ IS --定义实体YMQ,进行信号端口定义PORT (A: IN STD_LOGIC_VECTOR(3 DOWNTO 0);--A输入引脚端LED7S :OUT STD_LOGIC_VECTOR(6 DOWNTO 0));--LED7S输出引脚端END; --结束实体YMQARCHITECTURE bhv OF YMQ IS --定义结构体rtl,描述逻辑功能和电路结构BEGINPROCESS (A) BEGIN --敏感信号ACASE A IS --信号A的case语句WHEN "0"=>LED7S <="0111111"; --当A的值为“0”时,LED7S数码管显示0 WHEN "1"=>LED7S <="0000110"; --当A的值为“1”时,LED7S数码管显示1 WHEN "2"=>LED7S <="1011011"; --当A的值为“2”时,LED7S数码管显示2 WHEN "3"=>LED7S <="1001111"; --当A的值为“3”时,LED7S数码管显示3 WHEN "4"=>LED7S <="1100110"; --当A的值为“4”时,LED7S数码管显示4 WHEN "5"=>LED7S <="1101101"; --当A的值为“5”时,LED7S数码管显示5 WHEN "6"=>LED7S <="1111101"; --当A的值为“6”时,LED7S数码管显示6 WHEN "7"=>LED7S <="0000111"; --当A的值为“7”时,LED7S数码管显示7 WHEN "8"=>LED7S <="1111111"; --当A的值为“8”时,LED7S数码管显示8 WHEN "9"=>LED7S <="1101111"; --当A的值为“9”时,LED7S数码管显示9 WHEN OTHERS =>NULL;--其他的情况,不进行任何操作END CASE; --结束CASE语句END PROCESS; --结束进程END bhv; --结束结构体bhv******************************************************************************* *******************************************************************************4、比较器LIBRARY IEEE; --打开ieee库USE IEEE.STD_LOGIC_1164.ALL; --使用库中std_logic_1164所有内容USE I EEE.STD_LOGIC_ARITH.ALL; --使用库中STD_LOGIC_UNSIGNED所有内容USE IEEE.STD_LOGIC_UNSIGNED.ALL; --使用库中STD_LOGIC_UNSIGNED所有内容ENTITY bjq IS --定义实体bjq,进行信号端口定义GENERIC (A,Q1,Q2,Q3,Q4,Q5:NATURAL) ; --自然数信号定义PORT B:IN INTEGER --输入信号B引脚端Q:OUT STD_LOGIC_VECTOR); --输出信号Q引脚端END; --结束实体bjqARCHITECTURE bhv OF bjQ IS --定义结构体rtl,描述逻辑功能和电路结构BEGIN PROCESS(Q1,Q2,Q3,Q4,Q5,B,Q) --敏感性号BEGINA=Q1+Q2*10=Q3*100+Q4*1000+Q5*10000;--将各个进位乘以相应的位数值得到投赞成票的总人数IF B<A THEN Q='1'; --如果投赞成票的人数超过半数,这结果显示“1”表示通过ELSE Q='0'; --如果投赞成票的人数未超过半数,这结果显示“0”表示不通过END IF; --结束IF语句END PROCESS; --结束进程END bhv; --结束结构体bhv******************************************************************************* ******************************************************************************* 5、综合总程序LIBRARY IEEE; --打开ieee库USE IEEE.STD_LOGIC_1164.all; --使用库中std_logic_1164所有内容USE IEEE.STD_LOGIC_UNSIGNED.all; --使用库中STD_LOGIC_UNSIGNED所有内容ENTITY lianhe IS --定义实体lianhe,进行信号端口定义PORT(RST,EN,CLK,P:IN STD_LOGIC; --输入信号引脚端Q1,Q2,Q3,Q4,Q5,Q6: --输出信号引脚端OUT STD_LOGIC_VECTOR(3 DOWNTO 0);LED7S1,LED7S2,LED7S3,LED7S4,LED7S5,LED7S6:OUT_STD_LOGIC_VECTOR(6 DOWNTO 0);NEWCLK,P: OUT STD_LOGIC);end lianhe; --结束实体lianheARCHITECTURE BHV of lianhe is --敏感性号定义SIGNAL OC2,OC3,OC4,OC5,OC6,OC7:STD_LOGIC;SIGNAL D1,D2,D3,D4,D5,D6:STD_LOGIC_VECTOR(3 DOWNTO 0);component counter PORT(RST,EN,CLK:IN STD_LOGIC;--调用封装好的计时器函数 countOC:OUT STD_LOGIC; --定义声明调用函数的管脚端口Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END component; --结束调用语句component clkdiv PORT( CLK:IN STD_LOGIC; --调用封装好的分频器函数 clkdivclk_div16 : OUT STD_LOGIC ); --定义声明调用函数的管脚端口END component; --结束调用语句component YMQ --调用封装好的译码器函数 YMQ PORT (A: IN STD_LOGIC_VECTOR(3 DOWNTO 0); --定义声明调用函数的端口LED7S :OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END component; --结束调用语句Beginu1:counter PORT MAP(RST=>RST,EN=>EN,CLK=>CLK,Q=>D1,OC=>OC2);--十进制个位数表达式,D1为个位u2:counter PORT MAP(RST=>RST,EN=>EN,CLK=>OC2,Q=>D2,OC=>OC3);--十进制十位数表达式,D2为十位u3:counter PORT MAP(RST=>RST,EN=>EN,CLK=>OC3,Q=>D3,OC=>OC4);--十进制百位数表达式,D3为百位u4:counter PORT MAP(RST=>RST,EN=>EN,CLK=>OC4,Q=>D4,OC=>OC5);--十进制千位数表达式,D4为千位u5:counter PORT MAP(RST=>RST,EN=>EN,CLK=>OC5,Q=>D5,OC=>OC6);--十进制万位数表达式,D5为万位u6:counter PORT MAP(RST=>RST,EN=>EN,CLK=>OC6,Q=>D6,OC=>OC7);u7:clkdiv PORT MAP(CLK=>CLK,clk_div16 =>NEWCLK);--调用分频器函数u8:YMQ PORT MAP(A=>D1,LED7S=>LED7S1); --用译码管显示个位上的数u9:YMQ PORT MAP(A=>D2,LED7S=>LED7S2); --用译码管显示十位上的数u10:YMQ PORT MAP(A=>D3,LED7S=>LED7S3); --用译码管显示百位上的数u11:YMQ PORT MAP(A=>D4,LED7S=>LED7S4); --用译码管显示千位上的数u12:YMQ PORT MAP(A=>D5,LED7S=>LED7S5); --用译码管显示万位上的数u13:YMQ PORT MAP(A=>D6,LED7S=>LED7S6);A=Q1+Q2*10=Q3*100+Q4*1000+Q5*10000; --将各个进位乘以相应的位数值得到投赞成票的总人数IF B<A THEN P=“1”; --如果投赞成票的人数超过半数,这结果显示“1”表示通过ELSE P=“0”;--如果投赞成票的人数未超过半数,这结果显示“0”表示不通过END IF; --结束IF语句Q1<=D1;Q2<=D2;Q3<=D3;Q4<=D4;Q5<=D5;Q6<=D6;--将各个位上的显示出来END BHV; --结束结构体BHV四、实验步骤1 、创建工程在新建文件:D盘新建文件夹名shift作为工作库,以便将设计过程的相关文件存储于此。
1.wire型变量与reg型变量有什么本质区别?它们可以用于什么类型语句中?2.阻塞赋值与非阻塞赋值有何区别?1.用Verilog设计一个3-8译码器。
2.设计一个异步清0,同步时钟使能和异步数据加载型8位二进制加法计数器。
参考例3-22module CNT10(clk,rst,en,load,cout,dout,data);input clk,en,rst,load;input [3:0] data;output[3:0] dout;output cout;reg [3:0] q1; reg cout;assign dout=q1;always@(posedge clk or negedge rst or negedge load) beginif(!rst) q1<=0;else if(!load) q1<=data;else if(en) beginif (q1<9) q1<=q1+1;else q1<=4'b0000;end endalways@(q1)if(q1==4'h9) cout=1'b1;else cout=1'b0;endmodule3.设计一个功能类似74LS160的计数器。
4.设计一个含有异步清零和计数使能的16位二进制加减可控计数器的Verilog HDL描述。
5.设计七人表决器。
module voter7(pass,vote);output pass;input [6:0] vote;reg pass;reg [2:0] sum;always @(vote)beginsum=0;if(vote[0]==1) sum=sum+1'b1;if(vote[1]==1) sum=sum+1'b1;if(vote[2]==1) sum=sum+1'b1;if(vote[3]==1) sum=sum+1'b1;if(vote[4]==1) sum=sum+1'b1;if(vote[5]==1) sum=sum+1'b1;if(vote[6]==1) sum=sum+1'b1;if(sum[2]) pass=0; //若超过4人赞成,则pass=0,LED1亮else pass=1;endendmoduleAltera Xilinx一、填空题(10分,每小题1分)1.用EDA技术进行电子系统设计的目标最终完成 ASIC 的设计与实现。
eda课程设计表决器设计原理一、教学目标本课程的目标是让学生了解和掌握表决器设计原理,包括其工作原理、设计方法和应用场景。
具体目标如下:1.知识目标:学生应了解表决器的基本概念、分类和特点,掌握表决器的设计原理和方法,以及常见的表决器应用场景。
2.技能目标:学生能够运用表决器设计原理,分析和解决实际问题,具备一定的表决器设计和应用能力。
3.情感态度价值观目标:培养学生对科技创新的兴趣和好奇心,提高学生对电子技术的认同感和自豪感,培养学生的团队合作意识和沟通能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.表决器的基本概念和分类:介绍表决器的定义、分类和特点,让学生了解表决器的基本情况。
2.表决器的设计原理:讲解表决器的工作原理、设计方法和关键技术,使学生掌握表决器的内部结构和设计流程。
3.表决器的应用场景:介绍表决器在实际应用中的各种场景,让学生了解表决器在不同领域的作用和价值。
4.表决器的设计实践:通过实际案例分析和实验操作,让学生亲手设计并制作一个简单的表决器,提高学生的动手能力和实际应用能力。
三、教学方法为了达到本课程的教学目标,将采用以下几种教学方法:1.讲授法:教师通过讲解表决器的基本概念、设计原理和应用场景,为学生提供系统的知识体系。
2.讨论法:学生进行分组讨论,让学生分享自己的理解和观点,培养学生的团队合作意识和沟通能力。
3.案例分析法:通过分析具体的表决器应用案例,让学生了解表决器在实际中的应用和价值。
4.实验法:安排学生进行实验操作,让学生亲手设计并制作一个简单的表决器,提高学生的动手能力和实际应用能力。
四、教学资源为了保证本课程的顺利进行,将准备以下教学资源:1.教材:选择合适的教材,为学生提供权威、系统的学习资料。
2.参考书:提供相关的参考书籍,丰富学生的知识视野。
3.多媒体资料:制作精美的PPT、视频等多媒体资料,提高学生的学习兴趣和效果。
4.实验设备:准备足够的实验设备,确保每个学生都能参与到实验操作中,提高学生的动手能力。
2014年EDA技术考试试题考试时间:80分钟考试地点:理北219题目1:设计一个带有异步清零(clr),使能端(cs)的24进制增1计数器。
要求:完成程序的编写与编译,以及仿真(仿真中必须要体现clr、cs两端的功能)。
library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity test1 isport(clk,clr,cs:in std_logic;sum:out std_logic_vector(4 downto 0);cout:out std_logic);end;architecture one of test1 isSignal count: std_logic_vector(4 downto 0);beginprocess(clk,clr)BeginIf clr='1' thencount<=(others=>'0');elsif rising_edge(clk) thenif cs='1' thenif count=23 then count<=(others=>'0');cout<='1';else count<=count+1;cout<='0';end if;end if;end if;end process;sum<=count;end one;题目2:设计一个12位加法器,可参照实验1,采用原理图方式(编写VHDL 程序亦可以),完成原理图的设计和编译,以及仿真。
题目3:设计一个带有使能端(cs)的16选1数据选择器。
要求:完成程序的设计与编译,以及仿真。
library ieee;use ieee.std_logic_1164.all;entity test3 isport(a:in std_logic_vector(15 downto 0);q1,q2,q3,q4:in std_logic;cs:in std_logic;count:out std_logic);end;architecture one of test3 issignal q:std_logic_vector(3 downto 0);beginq<=q1 & q2 & q3& q4;process(a,q1,q2,q3,q4)beginif cs='1' thencase q iswhen "0000"=>count<=a(0);when "0001"=>count<=a(1);when "0010"=>count<=a(2);when "0011"=>count<=a(3);when "0100"=>count<=a(4);when "0101"=>count<=a(5);when "0110"=>count<=a(6);when "0111"=>count<=a(7);when "1000"=>count<=a(8);when "1001"=>count<=a(9);when "1010"=>count<=a(10);when "1011"=>count<=a(11);when "1100"=>count<=a(12);when "1101"=>count<=a(13);when "1110"=>count<=a(14);when "1111"=>count<=a(15);when others=>null;end case;end if;end process;end one;题目4:设计一个8位数据比较器,比较A、B两个数的大小。