EDA实验五.显示驱动电路设计

合集下载

DigitalClock

DigitalClock

EDA课程设计报告(数字钟设计)学院:信息科学与技术学院班级:2008050202姓名:杨颉学号:200805020220指导教师:曾伟、吴雄英日期:2011年6月——2011年7月内容摘要随着微电子技术和计算机技术的发展,电子信息产品更新换代的速度日新月异。

实现这种进步的主要原因就是电子设计与制造技术的发展,其核心就是电子设计自动化(EDA,Electronics Design Automation)技术,EDA技术的发展和推广应用极大地推动了电子信息产业的发展。

EDA技术在不同的发展时期有不同的内容,其含义已经不只局限在当初电路版图设计自动化的概念上,而当今的EDA技术更多的是指芯片内的电子系统设计自动化。

本次设计的关于数字钟的EDA实验就是这样的一种体现。

数字钟学习的目的是掌握多位计数器相连的设计方法;掌握十进制、六进制、二十四进制计数器的设计方法;巩固多位共阴极扫描显示数码管的驱动及编码;掌握CPLD、FPGA技术的层次化设计方法;掌握用原理图输入的设计思想以及整个数字系统的设计。

学会电路设计自动化软Protel DXP进行电路板计算机辅助设计的能力以及掌握电路原理图设计和印刷电路板PCB设计的方法和技术。

此数字钟具有时,分显示功能,以12/24小时为计数循环;能实现清零,调节小时,分钟的功能,关键词:EDA、数字钟、计数器、数码管、FPGA、计数器、译码器、DXP、PCB一、课设项目名称数字钟的设计与实现二、课设实验项目的目的和任务Ⅰ.设计目的1. 数字钟学习的目的是掌握多位计数器相连的设计方法;2. 掌握六十进制,十二进制,二十四进制计数器的设计方法;3. 巩固多位共阴级扫描显示数码管的驱动及编码;4. 对利用原理图输入设计相关模块有一定的了解;5. 掌握EDA技术的层次化设计方法;6. 熟悉Protel DXP 2004软件的操作;7. 学会原理图的绘制;8.学会PCB板的制作。

Ⅱ.设计要求1.具有时、分、秒计数且时、分显示功能,以12或24小时循环计时。

数码管显示控制器 eda 课程设计 报告电路图

数码管显示控制器 eda 课程设计 报告电路图

燕山大学EDA课程设计报告书题目:数码管显示控制器姓名:***班级:电子信息工程三班学号:************一、设计题目及要求题目:数码管显示控制器要求:1.能自动一次显示出数字0、1、2、3、4、5、6、7、8、9(自然数列),1、3、5、7、9(奇数列),0、2、4、6、8(偶数列),0、1、2、3、4、5、6、7、0、1(音乐符号序列);然后再从头循环;2.打开电源自动复位,从自然数列开始显示。

二、设计过程及内容本实验的总体电路由分频器,计数器,转换电路和数码管显示电路四模块组成。

模块一分频器为了使实验结果更便于观察,我设计了分频器电路。

选用实验箱上366Hz的时钟信号,用74161接成366进制计数器,把366Hz的时钟信号作为计数器的输入,使计数器的进位输出作为下一模块的时钟信号,通过这种模式从而起到分频的作用。

分频器的电路图如上图所示:其仿真波形为:模块二计数器根据题目要求,数码管显示的是一个包含30个数的循环,为使这些状态能够循环显示,我采用2片74161以置数的方式接成30进制,设计了30进制的计数器,并将第五位的输出Q0~Q4作为下一模块的输入。

使计数器的每一个计数状态与对应显示的数字建立一种一一对应关系,从而实现数列的循环显示。

电路图如下图所示:仿真波形为:模块三地址转换电路由于前一步骤中计数器的输出是五个端,而七段显示译码器只有四个输入端,因此我设计了这部分的地址转换电路。

在这一模块中我将计数器的5个输出端转换成4个输出端。

这一模块主要应用组合逻辑电路的知识,将0~29这三十个状态与显示的数字的码一一对应,并画出卡诺图,进行化简,找出对应关系,然后写出相应输出端的表达式,画出逻辑图即可得到地址转换电路。

电路图如下所示:模块四数码管显示电路将前一模块的四个地址输入端接到7448的输入端上,接好其它控制端,即组成了显示电路。

电路图如下;模块五总电路将设计好的四个模块相应端接好,如下图所示:波形如下;三、硬件设计方案本实验Device Family选择为“ELEX10K”所选择的编码器件“EPF10K10LC 84-3”,设置好引脚,连接好实验电路,将编译无误地程序下载到实验箱上,进行仿真,最终实验结果与预期要求完全吻合。

实验六 LED点阵显示驱动电路设计

实验六 LED点阵显示驱动电路设计

实验六LED16×16 汉字图形点阵显示电路一、实验目的1、掌握计数器设计。

2、掌握点阵LED显示模块的工作原理。

3、掌握VHDL基本逻辑电路的综合设计应用。

二、实验原理LED 点阵的行为扫描选通信号、列为数据输入。

显示采用逐行扫描方式,数据端不断输入数据,行扫描按一定顺序逐行选通,扫描一个周期(16次)产生一帧画面。

图1以4×4 共阴LED 阵列为例,给出了LED 阵列的组合方式,行选通低有效,数据高有效;数据端输入数据,选通行根据相应数据亮灯,接着送入第二行数据,选通第二行,依次完成一屏的扫描。

图1 LED阵列结构所要显示的点阵数据可存储在可编程芯片中的存储器中,电路结构框图如下所示:点阵显示驱动电路CLK_ROW为点阵扫描时钟;DIR[1..0]为点阵显示方式控制信号,00时左滚动显示,01时右滚动显示,10时闪烁显示。

DZ[15..0]为16位点阵数据输出,ADD_SCAN[3..0]为点阵扫描地址输出。

ROM用于存储点阵数据。

三、实验设备计算机软件:Quartus IIEDA实验箱。

主芯片:EPM7128SLC84-15或EP1K100QC208-3。

下载电缆,导线等。

四、实验内容及步骤1、制作ROM初始化文件,即mif文件。

方法如下:首先使用字模软件提取要显示的点阵信息。

然后在quartusII中新建一个256×16的mif文件,并输入上面提取的点阵数据,如下图2、使用宏功能向导定制一个LPM_ROM,元件名为ROM_DOT,用于存储点阵数据. ROM 位宽16位,深度8位。

3、输入以下参考代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY test_wait ISPORT (CLK_ROW: IN STD_LOGIC;DIR : IN STD_LOGIC_VECTOR(1 DOWNTO 0 );DZ: OUT STD_LOGIC_VECTOR(15 DOWNTO 0);ADD_SCAN: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END ENTITY test_wait;ARCHITECTURE ART OF test_wait ISCOMPONENT ROM_DOT ISPORT(ADDRESS : IN STD_LOGIC_VECTOR (7 DOWNTO 0);Q : OUT STD_LOGIC_VECTOR (15 DOWNTO 0));END COMPONENT ROM_DOT;SIGNAL ADD_ROM: STD_LOGIC_VECTOR(7 DOWNTO 0);ATTRIBUTE KEEP : BOOLEAN;ATTRIBUTE KEEP OF ADD_ROM:SIGNAL IS TRUE;SIGNAL CNT0 : STD_LOGIC_VECTOR(15 DOWNTO 0);BEGINPROCESS(CLK_ROW)BEGINIF CLK_ROW'EVENT AND CLK_ROW='1' THENCNT0<=CNT0+1;END IF;END PROCESS;ADD_SCAN<=CNT0(3 DOWNTO 0);PROCESS(CNT0,DIR) ISBEGINCASE DIR ISWHEN "00" => --左滚动ADD_ROM <= ("0000" & CNT0(3 DOWNTO 0)) + CNT0(15 DOWNTO 8); WHEN "01" => --右滚动ADD_ROM(3 DOWNTO 0) <=CNT0(3 DOWNTO 0)-CNT0(11 DOWNTO 8);IF CNT0(3 DOWNTO 0) < CNT0(11 DOWNTO 8) THENADD_ROM(7 DOWNTO 4) <= CNT0(15 DOWNTO 12) + 1;ELSEADD_ROM(7 DOWNTO 4) <= CNT0(15 DOWNTO 12) ;END IF;WHEN OTHERS => --闪烁显示ADD_ROM(3 DOWNTO 0) <= CNT0(3 DOWNTO 0);ADD_ROM(7 DOWNTO 4) <= CNT0(14 DOWNTO 11);END CASE;END PROCESS;U1: ROM_DOT PORT MAP(ADDRESS=>ADD_ROM,Q=>DZ);END ARCHITECTURE ART;4、选择恰当的CPLD/FPGA芯片,并按如下要求进行引脚锁定。

组合电路——7段数码管显示驱动电路设计报告

组合电路——7段数码管显示驱动电路设计报告

实验一、组合电路——7段数码管显示驱动电路设计一、实验目的了解EDA实验箱7位八段数码管显示模块的工作原理,设计标准扫描驱动电路模块,以备后面实验用。

二、硬件要求主芯片为Cyclone V E,型号为EP4CE22F17C8,7位八段数码管显示器,四位拨码开关。

三、实验内容用四位拨码开关产生8421BCD码,用CPLD分别产生7段数码管扫描驱动电路,然后进行仿真,观察波形,正确后编程下载实验测试。

四、实验原理1、72、动信号a,b,c,d,e,f,g。

通过调节四位拨码开关的状态,数码管应显示与之对应的字符。

五、实验连线输入:将芯片管角a0~a3分别接4个拨码开关;输出:将芯片管角led7s0~7分别接到数码管7段驱动信号a、b、c、d、e、f、g上。

六、实验源程序:decl7s.vhdlibrary ieee;use ieee.std_logic_1164.all;entity decl7s isport(a:in std_logic_vector(3 downto 0);led7s:out std_logic_vector(6 downto 0));end;architecture one of decl7s isbeginprocess(a)begincase a iswhen "0000" => led7s<="0111111"; when "0001" => led7s<="0000110"; when "0010" => led7s<="1011011"; when "0011" => led7s<="1001111"; when "0100" => led7s<="1100110"; when "0101" => led7s<="1101101"; when "0110" => led7s<="1111101"; when "0111" => led7s<="0000111"; when "1000" => led7s<="1111111"; when "1001" => led7s<="1101111"; when "1010" => led7s<="1110111"; when "1011" => led7s<="1111100"; when "1100" => led7s<="0111001"; when "1101" => led7s<="1011110"; when "1110" => led7s<="1111001"; when "1111" => led7s<="1110001"; when others => null;end case;end process;end;七、波形仿真结果。

EDA设计课程实验报告数码管动态显示实验报告

EDA设计课程实验报告数码管动态显示实验报告

EDA设计课程实验报告实验题目:数码管动态显示实验学院名称:专业:电子信息工程班级:姓名:高胜学号小组成员:指导教师:一、实验目的学习动态扫描显示的原理;利用数码管动态扫描显示的原理编写程序,实现自己的学号的显示。

二、设计任务及要求1、在SmartSOPC实验箱上完成数码管动态显示自己学号的后八个数字。

2、放慢扫描速度演示动态显示的原理过程。

三、系统设计1、整体设计方案数码管的八个段a,b,c,d,e,f,g,h(h是小数点)都分别连接到SEG0~SEG7,8个数码管分别由八个选通信号DIG0~DIG7来选择,被选通的数码管显示数据,其余关闭。

如果希望8个数码管显示希望的数据,就必须使得8个选通信号DIG0~DIG7分别被单独选通,并在此同时,在段信号输入口SEG0~SEG7加上该对应数码管上显示的数据,于是随着选通信号的扫描就能实现动态扫描显示的目的。

虽然每次只有1个数码管显示,但只要扫描显示速率足够快,利用人眼的视觉余辉效应,我们仍会感觉所有的数码管都在同时显示。

2、功能模块电路设(1)输入输出模块框图(见图1)图1(2)模块逻辑表达(见表1)表1(数码管显示真值表)clk_1k dig seg↑01111111 C0↑10111111 F9注:数码管显示为01180121(3)算法流程图(见图2)(4)Verilog源代码module scan_led(clk_1k,d,dig,seg); //模块名scan_ledinput clk_1k; //输入时钟input[31:0] d; //输入要显示的数据output[7:0] dig; //数码管选择输出引脚output[7:0] seg; //数码管段输出引脚reg[7:0] seg_r; //定义数码管输出寄存器reg[7:0] dig_r; //定义数码管选择输出寄存器reg[3:0] disp_dat; //定义显示数据寄存器reg[2:0]count; //定义计数寄存器assign dig = dig_r; //输出数码管选择assign seg = seg_r; //输出数码管译码结果always @(posedge clk_1k) //定义上升沿触发进程begincount <= count + 1'b1;endalways @(posedge clk_1k)begincase(count) //选择扫描显示数据3'd0:disp_dat = d[31:28]; //第一个数码管3'd1:disp_dat = d[27:24]; //第二个数码管3'd2:disp_dat = d[23:20]; //第三个数码管3'd3:disp_dat = d[19:16]; //第四个数码管3'd4:disp_dat = d[15:12]; //第五个数码管3'd5:disp_dat = d[11:8]; //第六个数码管3'd6:disp_dat = d[7:4]; //第七个数码管3'd7:disp_dat = d[3:0]; //第八个数码管endcasecase(count) //选择数码管显示位3'd0:dig_r = 8'b01111111; //选择第一个数码管显示3'd1:dig_r = 8'b10111111; //选择第二个数码管显示3'd2:dig_r = 8'b11011111; //选择第三个数码管显示3'd3:dig_r = 8'b11101111; //选择第四个数码管显示3'd4:dig_r = 8'b11110111; //选择第五个数码管显示3'd5:dig_r = 8'b11111011; //选择第六个数码管显示3'd6:dig_r = 8'b11111101; //选择第七个数码管显示3'd7:dig_r = 8'b11111110; //选择第八个数码管显示endcaseendalways @(disp_dat)begincase(disp_dat) //七段译码4'h0:seg_r = 8'hc0; //显示04'h1:seg_r = 8'hf9; //显示14'h2:seg_r = 8'ha4; //显示24'h3:seg_r = 8'hb0; //显示34'h4:seg_r = 8'h99; //显示44'h5:seg_r = 8'h92; //显示54'h6:seg_r = 8'h82; //显示64'h7:seg_r = 8'hf8; //显示74'h8:seg_r = 8'h80; //显示84'h9:seg_r = 8'h90; //显示94'ha:seg_r = 8'h88; //显示a4'hb:seg_r = 8'h83; //显示b4'hc:seg_r = 8'hc6; //显示c4'hd:seg_r = 8'ha1; //显示d4'he:seg_r = 8'h86; //显示e4'hf:seg_r = 8'h8e; //显示fendcaseendendmodule四、系统调试(1)仿真代码`timescale 1ns/1nsmodule scan_ledfz;reg clk_1k;reg[31:0] d;wire[7:0] dig;wire[7:0] seg;parameter dely=100;scan_led u1(clk_1k,d,dig,seg);always #(dely/2)clk_1k=~clk_1k;initial beginclk_1k=0;d=32'h01180134;#dely ;#dely ;#dely ;#dely ;#dely ;#(dely*20);#dely $finish;endinitial $monitor($time,,,"%b,%d,%h,%h",clk_1k,d,dig,seg); endmodulemodule scan_led(clk_1k,d,dig,seg); //模块名scan_ledinput clk_1k; //输入时钟input[31:0] d; //输入要显示的数据output[7:0] dig; //数码管选择输出引脚output[7:0] seg; //数码管段输出引脚reg[7:0] seg_r; //定义数码管输出寄存器reg[7:0] dig_r; //定义数码管选择输出寄存器reg[3:0] disp_dat; //定义显示数据寄存器reg[2:0] count=3'b000; //定义计数寄存器assign dig = dig_r; //输出数码管选择assign seg = seg_r; //输出数码管译码结果always @(posedge clk_1k) //定义上升沿触发进程begincount <= count + 1'b1;endalways @(posedge clk_1k)begincase(count) //选择扫描显示数据3'd0:disp_dat = d[31:28]; //第一个数码管3'd1:disp_dat = d[27:24]; //第二个数码管3'd2:disp_dat = d[23:20]; //第三个数码管3'd3:disp_dat = d[19:16]; //第四个数码管3'd4:disp_dat = d[15:12]; //第五个数码管3'd5:disp_dat = d[11:8]; //第六个数码管3'd6:disp_dat = d[7:4]; //第七个数码管3'd7:disp_dat = d[3:0]; //第八个数码管endcasecase(count) //选择数码管显示位3'd0:dig_r = 8'b01111111; //选择第一个数码管显示3'd1:dig_r = 8'b10111111; //选择第二个数码管显示3'd2:dig_r = 8'b11011111; //选择第三个数码管显示3'd3:dig_r = 8'b11101111; //选择第四个数码管显示3'd4:dig_r = 8'b11110111; //选择第五个数码管显示3'd5:dig_r = 8'b11111011; //选择第六个数码管显示3'd6:dig_r = 8'b11111101; //选择第七个数码管显示3'd7:dig_r = 8'b11111110; //选择第八个数码管显示endcaseendalways @(disp_dat)begincase(disp_dat) //七段译码4'h0:seg_r = 8'hc0; //显示04'h1:seg_r = 8'hf9; //显示14'h2:seg_r = 8'ha4; //显示24'h3:seg_r = 8'hb0; //显示34'h4:seg_r = 8'h99; //显示44'h5:seg_r = 8'h92; //显示54'h6:seg_r = 8'h82; //显示64'h7:seg_r = 8'hf8; //显示74'h8:seg_r = 8'h80; //显示84'h9:seg_r = 8'h90; //显示94'ha:seg_r = 8'h88; //显示a4'hb:seg_r = 8'h83; //显示b4'hc:seg_r = 8'hc6; //显示c4'hd:seg_r = 8'ha1; //显示d4'he:seg_r = 8'h86; //显示e4'hf:seg_r = 8'h8e; //显示fendcaseendendmodule位码代码仿真代码`timescale 1ns/1nsmodule smg_tp; //测试模块的名字reg [2:0] c; //测试输入信号定义为reg型wire[7:0] dig; //测试输出信号定义为wire型parameter DEL Y=100; //延时100秒wei u1(c,dig); //调用测试对象initial begin //激励波形设定c=3'b0;#DEL Y c=3'b001 ;#DEL Y c=3'b010 ;#DEL Y c=3'b100 ;#DEL Y c=3'b101 ;#DEL Y c=3'b110 ;#DEL Y c=3'b111 ;#DEL Y $finish;endinitial $monitor($time,,,"dig=%d,c=%b ",dig,c); //输出格式i定义endmodulemodule wei(c,dig); //命名模块名字input[2:0] c;output[7:0] dig; //定义输入与输出reg[7:0] dig_r;reg[2:0] c_r; // 定义dig_r与c_r2个reg型数据assign dig=dig_r; //将reg型数据转化为wire型数据always @(*) //检测c_r的数据是否变化begin c_r=c;case (c_r)3'b000:dig_r=8'b11111110; //c_r的数据变化而dig_r对于的数据变化3'b001:dig_r=8'b11111101;3'b010:dig_r=8'b11111011;3'b011:dig_r=8'b11110111;3'b100:dig_r=8'b11101111;3'b101:dig_r=8'b11011111;3'b110:dig_r=8'b10111111;3'b111:dig_r=8'b01111111;default: dig_r=8'b11111111;endcase //结束case语句end //结束always语句endmodule //结束程序译码器代码仿真代码`timescale 1ns/1nsmodule duan_tp; //测试模块的名字reg[3:0] a; //测试输入信号定义为reg型wire[7:0] seg; //测试输出信号定义为wire型parameter DEL Y=100; //延时100秒duan u1(a,seg); //调用测试对象initial begin //激励波形设定a=4'b0;#DELY a=4'b0001;#DELY a=4'b0010;#DELY a=4'b0011;#DELY a=4'b0100;#DELY a=4'b0101;#DELY a=4'b0110;#DELY a=4'b0111;#DELY a=4'b1000;#DELY a=4'b1001;#DELY a=4'b1010;#DELY a=4'b1011;#DELY a=4'b1100;#DELY a=4'b1101;#DELY a=4'b1110;#DELY a=4'b1111;#DELY $finish;endinitial $monitor($time,,,"seg=%d,a=%b",seg,a); //输出格式i定义endmodulemodule duan(a,seg); //命名模块名字input[3:0] a;output[7:0] seg; //定义输入与输出reg[7:0] seg_r;reg[3:0] a_r; // 定义seg_r与a_r2个reg型数据assign seg=seg_r; //将reg型数据转化为wire型数据always @(*) //检测c_r的数据是否变化begin a_r=a;case(a_r) //七段译码4'b0000:seg_r = 8'hc0; //显示04'b0001:seg_r = 8'hf9; //显示14'b0010:seg_r = 8'ha4; //显示24'b0011:seg_r = 8'hb0; //显示34'b0100:seg_r = 8'h99; //显示44'b0101:seg_r = 8'h92; //显示54'b0110:seg_r = 8'h82; //显示64'b0111:seg_r = 8'hf8; //显示74'b1000:seg_r = 8'h80; ///显示84'b1001:seg_r = 8'h90; //显示94'b1010:seg_r = 8'h88; //显示a4'b1011:seg_r = 8'h83; //显示b4'b1100:seg_r = 8'hc6; //显示c4'b1101:seg_r = 8'ha1; //显示d4'b1110:seg_r = 8'h86; //显示e4'b1111:seg_r = 8'h8e; ///显示f endcase //结束case语句end //结束always语句endmodule //结束程序(2)仿真波形图(3)引脚图五、实验感想通过这次实验,让我学习动态扫描显示的原理;利用数码管动态扫描显示的原理编写程序,实现自己的学号的显示。

EDA实验5数码管(LED)驱动显示设计

EDA实验5数码管(LED)驱动显示设计

EDA实验5数码管(LED)驱动显示设计实验六数码管(LED)驱动显示设计一、实验目的1.学习7段数码显示译码器设计;2.学习硬件扫描显示电路的设计。

二、实验原理1、7段数码显示译码器原理通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示(数码管可以显示0~F),最方便的方法就是利用译码程序在FPGA/CPLD中来实现。

EL-EDA-Ⅲ实验系统的显示采用8位八段共阴极数码管(高电平有效),所对应的接口序号为:8段驱动接口:a、b、c、d、e、f、g、Dp;例6-1作为7段译码器,输入为需要显示的数,输出信号LED7S 的7位分别接如图1数码管的7个段,高位在左,低位在右。

例如当LED7S输出为“1101101”时,数码管的7个段:g、f、e、d、c、b、a分别接1、1、0、1、1、0、1;接有高电平的段发亮,于是数码管显示“5”。

注意:这里没有考虑表示小数点的发光管,如果要考虑,需要增加段h,例6-1参考程序中的output [6:0] LED7S 应改为output [7:0] LED7S。

图6-1共阴数码管及其电路【例6-1】module DECL7S (A, LED7S);input [3:0] A;output [6:0] LED7S;reg [6:0] LED7S;always @(A)begincase(A)4'b0000 : LED7S<=7'b0111111;//从此句可以看出LED7S[7]应该接到数码管的//g段上4'b0001: LED7S <= 7'b0000110 ;4'b0010: LED7S <= 7'b1011011;4'b0011: LED7S <= 7'b1001111;4'b0100: LED7S <= 7'b1100110 ;4'b0101: LED7S <= 7'b1101101;4'b0110: LED7S <= 7'b1111101 ;4'b0111: LED7S <= 7'b0000111 ;4'b1000: LED7S <= 7'b1111111 ;4'b1001: LED7S <= 7'b1101111 ;4'b1010: LED7S <= 7'b1110111 ;4'b1011: LED7S <= 7'b1111100 ;4'b1100: LED7S <= 7'b0111001 ;4'b1101: LED7S <= 7'b1011110 ;4'b1110: LED7S <= 7'b1111001 ;4'b1111: LED7S <= 7'b1110001 ;endcaseendendmodule2、8位数码扫描显示原理四位拨码开关产生8421BCD码,经译码电路后成为7段数码管(不包括小数点段位)的字形显示驱动信号(a…g)。

可编程逻辑器件实验EDA-七段数码管显示电路

可编程逻辑器件实验EDA-七段数码管显示电路

实验四 七段数码管显示电路
一、实验目的
实现十六进制计数显示。

二、硬件需求
EDA/SOPC 实验箱一台。

三、实验原理
七段数码管分共阳极与共阴极两种。

共阳极数码管其工作特点是,当笔段电极接低电平,公共阳极接高电平时,相应笔段可以发光。

共阴极数码管则与之相反,它是将发光二极管的阴极短接后作为公共阴极,当驱动信号为高电平、公共阴极接低电平时,才能发光。

图2-13为共阳极数码管和共阴极数码管的内部结构图。

a b c d e f g h
a
b
c
d
e
f
g
h
a b c d e f g h
DIG
DIG
共阴极七段数码管
共阳极七段数码管
图2-13 共阳极数码管和共阴极数码管的内部结构图
用七段数码管除了可以显示0~9的阿拉伯数字外,还可以显示一些英语字母。

下表是常见的字母与7段显示关系(共阴极数码管)。

编写一个0~F 轮换显示的电路(注意:选用实验箱中的共阳数码管DP1A ,FPGA 上
P25引脚连接50MHz时钟。

实验时为了便于观察,要将50MHz时钟经过分频得到1Hz时钟)。

五、实验步骤
(1)实验程序
(2)仿真结果
为方便观察程序功能,分频改为6分频,从上图可以看出数码管输出能够连续变化,同时输出正确稳定的七位码。

(3)管脚绑定
(4)实验实际结果
从实际的上电结果可以看出,每过一秒,数码管数值增1,并发生跳变显示。

EDA实验二 八位七段数码管动态显示电路的设计

EDA实验二  八位七段数码管动态显示电路的设计

实验名称八位七段数码管动态显示电路的设计一、实验目的1、了解数码管的工作原理。

2、学习七段数码管显示译码器的设计。

3、学习Verilog的CASE语句及多层次设计方法。

二、实验原理七段数码管是电子开发过程中常用的输出显示设备。

在实验系统中使用的是两个四位一体、共阴极型七段数码管。

其单个静态数码管如下图4-1所示。

图4-1 静态七段数码管由于七段数码管公共端连接到GND(共阴极型),当数码管的中的那一个段被输入高电平,则相应的这一段被点亮。

反之则不亮。

共阳极性的数码管与之相么。

四位一体的七段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。

八个数码管的a、b、c、d、e、f、g、h、dp都连在了一起,8个数码管分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭。

三、实验内容本实验要求完成的任务是在时钟信号的作用下,通过输入的键值在数码管上显示相应的键值。

在实验中时,数字时钟选择1KHZ作为扫描时钟,用四个开关做为输入,当四个开关置为一个二进制数时,在数码管上显示其十六进制的值。

实验箱中的拨动开关与FPGA的接口电路,以及开关FPGA的管脚连接在实验一中都做了详细说明,这里不在赘述。

数码管显示模块的电路原理如图4-2所示,表4-1是其数码管的输入与FPGA的管脚连接表。

图4-2 数字时钟信号模块电路原理信号名称对应FPGA管脚名说明7SEG-A G6 七段码管A段输入信号7SEG-B G7 七段码管B段输入信号7SEG-C H3 七段码管C段输入信号7SEG-D H4 七段码管D段输入信号7SEG-E H5 七段码管E段输入信号7SEG-F H6 七段码管F段输入信号7SEG-G J4 七段码管G段输入信号7SEG-DP L8 七段码管dp段输入信号7SEG-SEL0 G5 七段码管位选输入信号7SEG-SEL1 G3 七段码管位选输入信号7SEG-SEL2 F4 七段码管位选输入信号表4-1 数码管与FPGA的管脚连接表四、实验步骤1、打开QUARTUSII软件,新建一个工程。

EDA数码管的显示整个流程实验报告

EDA数码管的显示整个流程实验报告

EDA 第一次实验报告实验目的:利用QuartusⅡ软件,采用自上而下或自下而上的模块化层次设计数码管扫描显示电路,通过仿真波形及硬件实验平台验证设计,从而熟悉QuartusⅡ的数字系统设计流程以及FPGA开发模式。

一、实验设计方案1.原理说明:几个数码管在同一时间进行显示利用人眼的视觉暂留效应,把多个数码管按一定顺序(从左至右或从右至左)循环进行点亮,当点亮的频率足够高时,我们可以看到全部同时显示(点亮)。

因此,我们只要给数码管驱动电路一个足够高的扫描工作频率,就可以实现几个数码管同时点亮。

而用来产生这个扫描频率的驱动电路,可以通过BCD七段译码器的输入数据切换电路,通过计数器的输出来控制几个多路数据选择器电路的实现,只要计数频率足够高,就可以实现我们的要求。

2.结构框图:其中,3选1多路选择器以及2-3译码器的输入信号是由模4计数器统一输出控制,以达到数码管的位选以及段选同时变化的效果。

二、实验流程:1、模4计数器设计并进行仿真,下载到电路板上测试2、3选1多路选择器设计3、2-3译码器设计并进行仿真4、综合利用模4计数器,3选1多路选择器以及2-3译码器完成数码管扫描显示电路的设计并进行仿真,下载到电路板上测试模4计数器与2-3译码器大同小异。

所以,我就以2-3译码器为例简单的讲述一下演示工程的创建过程。

3选1多路选择器:1)打开Quartus,创建工程,点击File->New Project WizardEDA 实验报告王丹计科一班 2注意工程文件名一定要和顶层实体名一致,否则到后面编译的时候就有可能会报错并且还很难找出错误原因。

2)点击Next,下一步是添加工程所需子模块设计源文件及设置用户库,我们目前不需要,直接单击Next。

3)选择目标器件我在实验室里截了图,其实可以看出,上面器件的选取和电板上的芯片型号相同。

因此,一定要根据实际情况对器件进行选取,否则,仿真时就会出现问题。

中山学院EDA综合实验报告-VGA彩条信号显示控制电路设计

中山学院EDA综合实验报告-VGA彩条信号显示控制电路设计
4、顶层文件,上述各模块连接成的原理图,如下所示
5、实验结果截图及原理分析
原理分析:首先根据VGA图像的扫描时序与实验箱核心板原理图的VGA端口用VerilogHDL语言写出VGA模块,然后新建一个ROM模块把原本已经准备的mif格式的图片加入其中,最后写一个clock模块并生成电路模块进行电路连接。在烧录代码后,FPGA会不断地根据VGA图像的扫描时序来读取图片中的每个像素点RGB,通过时钟信号一直扫描下去,由此能显示出整张图片。
三、实验结论与心得
在这次实验中,我花了两个晚上在寻找与理解相关资料,同时有两个下午在实验室调试,在这个过程中有很多次失败,但是失败却能让人理解对其得更透彻,终于在第二个下午调试不出来图像的时候,回到宿舍后突然想出了问题出处与解决方法,真是奇妙。在做这次实验之前,我觉得这次最后的实验是检验自己对这门课的掌握程度,而不是单纯为了得到满分。
学生实验报告
系别
电子信息学院
课程名称
《EDA综合实验》
班级实验名称VGA条信号显示控制电路设计姓名
实验时间
学号
指导教师
成绩
批改时间
报告内容
一、实验目的和任务
学习VGA图像显示控制电路设计。
二、设计代码(或原理图)、仿真波形及分析
1、rom为图像数据存储模块
2、VGA模块扫描显示功能,代码如下所示
3、clock模块实现将输入时钟二分频后输出功能,代码如下所示:

EDA数字电路设计实验报告范文

EDA数字电路设计实验报告范文

一、实验目的通过本实验的学习,使学生掌握VHDL 中文件IO、配置、同步和异步设计等知识,训练VHDL 的编程能力,培养数字电路设计的基本技能,为今后继续学习大规模数字系统设计奠定基础。

二、实验内容1、分析示例代码,掌握VDHL 文件IO 的编写方法。

2、分析示例代码,掌握VDHL 配置的使用以及编写方法。

3、按照要求修改文件IO 和配置的示例代码。

4、根据同步和异步设计的不同,按照要求编写代码。

三、实验原理、方法和手段复杂设计,例如CPU,需要给它执行的指令。

以验证其正确性。

执行的结果也可以保存在文件中,供以后分析用。

VHDL 提供了文件读写功能,可以将测试激励预先保存在文件中,然后读入进行仿真。

文件读写的功能保存在IEEE 库的std.textio 和 std_logic_textio 包中,在文件头包含这些库,包,就可以调用文件读写函数。

文件I/O 关键语句:1、使用IEEE 文件读写包:USE ieee.std_logic_textio.all;USE std.textio.all;2、定义文件数据类型file results: text open write_mode is “results.txt";file mem_data: text;3、打开文件file_open(mem_data, "mem_data.txt", read_mode);4、定义行变量variable inline: line;5、读入一行数据到行变量readline(mem_data, inline);6、读行变量数据read(inline, ram_mem_temp);7、写数据到行变量write(OneLine,addr,right,10);8、写行变量到文件中writeline(results,OneLine);9、类型转换To_stdlogicvector(ram_mem_temp);--将ram_mem_temp 转换成std_logic_vector 型变量conv_integer(addr);--将addr 转换成interger 型变量1),常用的数据类型,函数,过程,模块,测试激励可以放在一个包中,以方便重用。

EDA8位计数显示译码电路的设计

EDA8位计数显示译码电路的设计

EDA8位计数显示译码电路的设计八位计数显示译码电路是一种常见的数字电路设计,用于将二进制计数器的输出转换为对应的字符或数字显示。

本次EDA报告将介绍八位计数显示译码电路的设计原理、功能和设计过程。

1.设计原理:八位计数显示译码电路的主要原理是通过接收二进制计数器的输出信号,通过对应的译码器将其转换为七段数码管的控制信号,从而实现显示。

2.设计功能:八位计数显示译码电路的功能主要包括:-显示功能:将二进制计数器的输出显示在七段数码管上,实现数字的可视化显示。

-增量计数:根据输入的时钟信号进行增量计数,实现从0到255的循环计数。

-译码功能:将二进制计数器的输出信号转换为七段数码管的控制信号,控制数码管上对应的数码显示。

3.设计过程:八位计数显示译码电路的设计过程主要包括以下几个步骤:3.1确定输入与输出首先,我们需要确定设计的输入和输出。

输入主要包括时钟信号和复位信号,用于控制计数和复位操作;输出为控制七段数码管显示的控制信号。

3.2确定译码方式根据设计需求,我们可以选择使用常见的译码方式,如BCD译码器、十六进制译码器等。

根据实际情况选择适合的译码方式,使得设计简单有效。

3.3确定译码逻辑在确定了译码方式后,需要根据输入信号和输出信号的关系,确定译码逻辑。

根据二进制计数器的输出信号,将其映射到对应的数字或字符,为七段数码管提供正确的控制信号。

3.4组合逻辑设计根据译码逻辑,设计出控制信号的生成电路。

可以使用门电路、与非门电路或多路选择器等组合逻辑电路实现。

3.5简化逻辑电路对于逻辑电路的设计,可以使用布尔代数、卡诺图等方法进行简化和优化,使电路结构更为简洁。

3.6电路仿真与验证完成电路设计后,可以使用电路仿真工具对电路进行验证和测试,确保电路功能正确。

4.设计注意事项:在设计八位计数显示译码电路时,需要注意以下几点:4.1七段数码管的驱动电流和电压根据所选用的七段数码管的规格,需要确保驱动电流和电压符合规格要求。

共阴极七段数码显示驱动电路

共阴极七段数码显示驱动电路

共阴极七段数码显示驱动电路一、实验目的了解EDA实验箱8位八段数码管显示模块的工作原理,设计标准扫描驱动电路模块,以备后面实验用。

二、硬件要求主芯片Altera EPM7128SLC84-15,时钟,8位八段数码管显示器,四位拨码开关。

三、实验内容描述一个七段数码显示的驱动电路。

该电路有BCD码输入端db,两个输入控制端lt、bi,控制输出端bio,输出端segout(7位)。

四、实验连线输入:将芯片输入管角分别接4个拨码开关;输出:将芯片输出管角分别接到数码管7段驱动信号a、b、c、d、e、f、g上。

五、实验源程序library ieee;use ieee.std_logic_1164.all;entity display isport(lt:in bit;bi:in bit;bio:out bit;db:in std_logic_vector(3 downto 0);segout:out std_logic_vector(6 downto 0));end ;architecture a of display isbeginprocessbeginif lt='0' and bi='0' thensegout<="0000000";bio<='0';elsif lt='0' and bi='1' thensegout<="1111111";bio<='1';elsif lt='1' and bi='0' and db="0000" thensegout<="0000000";bio<='0';elsif lt='1' and bi='1' and db="0000" thensegout<="0111111";bio<='1';elsif lt='1' and db="0001" thensegout<="0000110";bio<='1';elsif lt='1' and db="0010" then segout<="1011011";bio<='1';elsif lt='1' and db="0011" then segout<="1001111";bio<='1';elsif lt='1' and db="0100" then segout<="1100110";bio<='1';elsif lt='1' and db="0101" then segout<="1101101";bio<='1';elsif lt='1' and db="0110" then segout<="1111101";bio<='1';elsif lt='1' and db="0111" then segout<="0000111";bio<='1';elsif lt='1' and db="1000" then segout<="1111111";bio<='1';elsif lt='1' and db="1001" then segout<="1101111";bio<='1';elsif lt='1' and db>"1001" then segout<="0000000";bio<='0';end if;end process;end;六、波形仿真结果。

EDA_扫描驱动显示电路程序

EDA_扫描驱动显示电路程序

设计任务本实验要求在给定子模块程序的基础上,画出设计原理图。

自行编写顶层模块程序,完成扫描显示驱动电路的设计,实现在8 个数码管上轮流显示字符0-F 的功能。

library ieee;use ieee.std_logic_1164.all;entity disp isport(clk,reset: in std_logic;a,b,c,d,e,f,g: out std_logic;y: out std_logic_vector(2 downto 0));end disp;architecture beha of disp iscomponent counter16port(clk,clr: in std_logic;count: out std_logic_vector(3 downto 0));end component;component decdispport(datain: in std_logic_vector(3 downto 0);a,b,c,d,e,f,g: out std_logic);end component;component yima3port(x: in std_logic_vector(2 downto 0);y: out std_logic_vector(2 downto 0));end component;signal cont: std_logic_vector(3 downto 0);signal sel3: std_logic_vector(2 downto 0);begind1:counter16 port map(clk=>clk,clr=>reset,count=>cont);d2:decdisp port map(datain=>cont,a=>a,b=>b,c=>c,d=>d,e=>e,f=>f,g=>g);d3:yima3 port map(x=>cont(2 downto 0),y=>y);end beha;library ieee;use ieee.std_logic_1164.all;entity yima3 isport( x: in std_logic_vector(2 downto 0);y: out std_logic_vector(2 downto 0));end yima3 ;architecture beha of yima3 isbeginy<=x;end beha;library ieee;use ieee.std_logic_1164.all;entity decdisp isport(datain: in std_logic_vector(3 downto 0);a,b,c,d,e,f,g: out std_logic);end decdisp;architecture beha of decdisp issignal dataout: std_logic_vector(6 downto 0); begina<=dataout(6);b<=dataout(5);c<=dataout(4);d<=dataout(3);e<=dataout(2);f<=dataout(1);g<=dataout(0);process(datain)begincase datain iswhen "0000"=>dataout<="1111110";when "0001"=>dataout<="0110000";when "0010"=>dataout<="1101101";when "0011"=>dataout<="1111001";when "0100"=>dataout<="0110011";when "0101"=>dataout<="1011011";when "0110"=>dataout<="1011111";when "0111"=>dataout<="1110000";when "1000"=>dataout<="1111111";when "1001"=>dataout<="1111011";when "1010"=>dataout<="1110111";when "1011"=>dataout<="0011111";when "1100"=>dataout<="1001110";when "1101"=>dataout<="0111101";when "1110"=>dataout<="1001111";when "1111"=>dataout<="1000111";when others=>dataout<="XXXXXXX";end case;end process;end beha;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity counter16 isport(clk,clr: in std_logic;count: out std_logic_vector(3 downto 0);sel: out std_logic_vector(2 downto 0)); end counter16;architecture beha of counter16 issignal cnt: std_logic_vector(3 downto 0); beginprocess(clk,clr)beginif clr='0'thencnt<="0000";elsif clk='1' and clk'event thencnt<=cnt+'1';end if;count<=cnt;sel<=cnt(2 downto 0);end process;end beha;。

eda显示课程设计

eda显示课程设计

eda显示课程设计一、课程目标知识目标:1. 学生能理解EDA(电子设计自动化)的基本概念,掌握EDA工具的使用方法。

2. 学生能运用EDA软件进行简单的电路设计和仿真,理解电路图与实际电路之间的关系。

3. 学生了解显示电路的基本原理,掌握显示器件的工作方式和应用。

技能目标:1. 学生能独立操作EDA软件,完成基本的电路绘制和仿真。

2. 学生能够设计简单的显示电路,并进行调试和优化。

3. 学生通过实践,培养解决实际问题的能力和团队协作能力。

情感态度价值观目标:1. 学生培养对电子科技的兴趣,增强创新意识和实践能力。

2. 学生在学习过程中,养成严谨、细致、勇于探索的科学态度。

3. 学生通过团队合作,培养沟通、协作、尊重他人的价值观。

课程性质:本课程为实践性较强的电子技术课程,旨在通过EDA软件的运用,使学生掌握显示电路的设计方法。

学生特点:学生处于高年级阶段,具备一定的电子技术基础和计算机操作能力。

教学要求:注重理论与实践相结合,提高学生的动手能力和实际问题解决能力。

通过课程学习,使学生将所学知识应用于实际项目中,达到学以致用的目的。

同时,关注学生的个体差异,因材施教,激发学生的学习兴趣和潜能。

二、教学内容1. EDA软件介绍:使学生了解EDA软件的基本功能、特点和应用领域,掌握软件的安装与基本操作方法。

- 教材章节:第二章 电子设计自动化概述2. EDA电路设计基础:讲解电路图绘制、原理图设计、元件库调用等基本操作。

- 教材章节:第三章 EDA电路设计基础3. 显示电路原理:介绍显示器件的工作原理、分类及应用,使学生掌握显示电路的设计方法。

- 教材章节:第四章 显示器件原理与应用4. EDA软件在显示电路设计中的应用:通过实例讲解,让学生学会使用EDA 软件设计显示电路。

- 教材章节:第五章 EDA软件在显示电路设计中的应用5. 电路仿真与调试:指导学生进行电路仿真、调试,掌握常见问题的解决方法。

EDA实验二八位七段数码管动态显示电路的设计

EDA实验二八位七段数码管动态显示电路的设计

EDA实验二八位七段数码管动态显示电路的设计八位七段数码管动态显示电路是一种常用的显示电路,用于将数字信号转换成七段数码管的显示形式。

本文将详细介绍八位七段数码管动态显示电路的设计原理和实现方法。

首先,我们先介绍一下七段数码管的基本原理和工作方式。

一、七段数码管的基本原理和工作方式七段数码管通常由七个独立的LED组成,分别代表数字0到9和字母A到F。

这七个LED分别为a,b,c,d,e,f,g,用于显示不同的数字。

通过控制每个LED的亮灭状态,可以显示出不同的数字。

七段数码管通常采用共阳极或共阴极的方式控制。

在共阳极的情况下,数码管的共阳极引脚接Vcc,每个LED的阴极引脚分别通过控制芯片上的开关来控制灯的亮灭;在共阴极的情况下,数码管的共阴极引脚接GND,每个LED的阳极引脚通过控制芯片上的开关来控制灯的亮灭。

根据实际需要选择共阳极或共阴极的七段数码管。

在七段数码管中,每个LED代表一个计算机的位数。

例如,数码管中的aLED表示计算机数据的最低位,而gLED表示计算机数据的最高位。

二、八位七段数码管动态显示电路的设计原理八位七段数码管动态显示电路的设计原理是将八个七段数码管连接在一起,通过改变每个数码管的亮灭状态,实现数字的动态显示。

具体的设计原理是通过一个计数器生成7个时序信号,然后再通过逻辑控制器将这些时序信号分配给各个数码管。

可以用三个个位计数器来实现生成的7个时序信号。

其中,一个计数器用于控制7个段的扫描,即a,b,c,d,e,f,g;另外两个计数器用于控制8位数码管中的8个数位,即1,2,3,4,5,6,7,8具体实现时,可以通过一个时钟信号来驱动计数器,每个计数器都有一个计数使能信号和一个计数复位信号。

通过适当的设计时钟信号的频率和计数使能/复位信号的控制,可以实现不同的动态显示效果。

三、八位七段数码管动态显示电路的实现方法八位七段数码管动态显示电路的实现方法可以分为三个步骤:计数器设计、逻辑控制器设计和电路布线。

实验五显示驱动电路设计(可编程实验)

实验五显示驱动电路设计(可编程实验)

实验五显示驱动电路设计一、实验目的1、了解八段数码管的工作原理。

2、设计一个数码管驱动电路,现实0~F之间的数字,以备以后调用。

二、实验内容(1)七段数码管电路的设计要求:a.写出实验内容的真值表及逻辑表达式。

b.编写出实现电路的VHDL语言程序。

c.用MAX+plus2进行仿真。

d.将编好的程序下载到CPLD芯片里,用发光二极管观测结果。

(2)设计一个两个2位二进制相乘电路,结果用数码管显示要求:a.写出实验内容的真值表及逻辑表达式。

b.编写出实现电路的VHDL语言程序。

c.用MAX+plus2进行仿真。

d.将编好的程序下载到CPLD芯片里,观测结果。

三、实验逻辑功能分析及预习情况(2)设计一个两个2位二进制相乘电路,结果用数码管显示1四、实验过程(1)启动MAX+plusII软件;(2)创建一个新工程;1)七段数码管电路的设计○1启动文本编译器;○2编译VHDL语言程序为Library ieee;Use ieee.std_logic_1164.all;Entity qiduanshu isPort(A:in std_logic_vector(3 downto 0);Y:out std_logic_vector(6 downto 0));End;Architecture rel of qiduanshu isBeginprocess(A)Begincase A iswhen "0000"=>y<="1111110";when "0001"=>y<="0110000";when "0010"=>y<="1101101";when "0011"=>y<="1111001";when "0100"=>y<="0110011";when "0101"=>y<="1011011";when "0110"=>y<="1011111";when "0111"=>y<="1110000";when "1000"=>y<="1111111";when "1001"=>y<="1111011";when "1010"=>y<="1110111";when "1011"=>y<="0011111";when "1100"=>y<="1001110";when "1101"=>y<="0111101";when "1110"=>y<="1001111";when "1111"=>y<="1000111";when others=>y<="ZZZZ";end case;end process;End;○3启动波形图编译器;○4时间分析图○5利用真值表验证所设电路的逻辑功能;○6经过验证保存仿真原理图。

EDA实验报告含结果图

EDA实验报告含结果图

EDA电子课程实验报告专业:班级:姓名:学号:实验一四人表决器一实验目的1、熟悉Quartus II软件的使用。

2、熟悉EDA-IV实验箱。

3、熟悉EDA开发的基本流程。

二硬件需求1、RC-EDA-IV型实验箱一台;2、RC-EDA-IV型实验箱配套USB-Blaster下载器一个;3、PC机一台。

三实验原理所谓表决器就是对于一个行为,由多个人投票,如果同意的票数过半,就认为此行为可行;否则如果否决的票数过半,则认为此行为无效。

四人表决器顾名思义就是由四个人来投票,当同意的票数大于或者等于3人时,则认为同意;反之,当否决的票数大于或者等于2人时,则认为不同意。

实验中用4个拨挡开关来表示4个人,当对应的拨挡开关输入为‘1’时,表示此人同意;否则若拨挡开关输入为‘0’时,则表示此人反对。

表决的结果用一个LED表示,若表决的结果为同意,则LED被点亮;否则,如果表决的结果为反对,则LED不会被点亮。

四实验内容VHDL程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;--------------------------------------------------------------------entity EXP3 isport(k1,K2,K3,K4 : in std_logic;ledag : out std_logic_vector(3downto 0);m_Result : out std_logic);end EXP3;--------------------------------------------------------------------architecture behave of EXP3 issignal K_Num : std_logic_vector(2 downto 0); signal K1_Num,K2_Num: std_logic_vector(2 downto 0); signal K3_Num,K4_Num: std_logic_vector(2 downto 0);beginprocess(K1,K2,K3,K4)beginK1_Num<='0'&'0'&K1;K2_Num<='0'&'0'&K2;K3_Num<='0'&'0'&K3;K4_Num<='0'&'0'&K4;end process;process(K1_Num,K2_Num,K3_Num,K4_Num,)beginK_Num<=K1_Num+K2_Num+K3_Num+K4_Num;end process;process(K_Num) beginif(K_Num>2) thenm_Result<='1';elsem_Result<='0';end if;end process;end behave;实验电路实验二格雷码转换一实验目的1、了解格雷码变换的原理。

(完整word版)EDA实验报告-实验2-数码管扫描显示电路

(完整word版)EDA实验报告-实验2-数码管扫描显示电路

暨南大学本科实验报告专用纸课程名称 EDA 实验 成绩评定 实验项目名称 数码管扫描显示电路 指导教师 郭江陵 实验项目编号 02 实验项目类型 验证 实验地点 B305 学院 电气信息学院 系 专业 物联网工程 组号: A6一、实验前准备本实验例子使用独立扩展下载板EP1K10_30_50_100QC208(芯片为EP1K100QC208)。

EDAPRO/240H 实验仪主板的VCCINT 跳线器右跳设定为3。

3V ; EDAPRO/240H 实验仪主板的VCCIO 跳线器组中“VCCIO3.3V"应短接,其余VCCIO 均断开;独立扩展下载板“EP1K10_30_50_100QC208”的VCCINT 跳线器组设定为2。

5V ;独立扩展下载板“EP1K10_30_50_100QC208”的VCCIO 跳线器组设定为3。

3V 。

请参考前面第二章中关于“电源模块"的说明。

二、实验目的1、了解时序电路设计。

2、制作一个数码管显示的7段译码电路,以备以后调用.三、实验原理在电子电路显示部分里,发光二极管(LED)、七段显示数码管、液晶显示(LCD)均是十分常见的人机接口电路.通常点亮一个LED 所需的电流在5~20mA 之间,电流愈大,LED 的亮度也高,相对的使用寿命也愈短。

若以10mA 导通电流来估算一个接5V 的串接电阻值计算应为:(5-1.6)/10mA ≈0.34K Ω。

七段显示数码管分为共阳、共阴二种极性。

它们等效成八个LED 相连电路。

共阴极七段显示器的LED位置定义和等效电路共阴极七段显示码十六进制转换表四、实验内容用拨码开关产生8421BCD码,CPLD器件产生译码及扫描电路,把BCD码显示在LED数码管上,通过改变扫描频率观察数码管刷新效果。

五、实验要求学习在MAX+PLUS II中使用VHDL设计功能模块,并将所生成的功能模块转换成MAX+PLUS II原理图的符号库,以便在使用原理图时调用该库。

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

西安邮电学院实验中心实验报告
院系电子工程学院班级
学号姓名
成绩教师签字
实验日期
实验名称显示驱动电路设计
_______________________________________________________
一、实验目的
二、实验所用仪表及主要器材
三、实验原理简述
四、实验测量记录:(如数据、表格、曲线、计算等)
五、实验遇到的问题及解决办法:(余留问题,体会等)
一、实验目的
(1)掌握七段译码器的工作原理。

(2)学习显示驱动电路的BHDL描述方法。

(3)学习运用波形激励来仿真程序的正确性。

(4)了解数码管扫描显示的原理及实现。

二、实验所用仪表及主要器材
PC,可编程逻辑实验电路板,下载线,USB电源线,双踪示波器,数字万用表,导线若干。

三、实验内容
在MAX+PULSII环境下,用VHDL语言按照输入—>编译—>仿真。

(1将两个二位二进制数相乘结果用数码管显示。

在MAX+plusII环境下,用VHDL语言描述下列逻辑电路,并编译,仿真。

程序
library ieee;
use ieee.std_logic_1164.all;
entity e is
port(en,a,b,c,d:in std_logic;
y:out std_logic_vector(6 downto 0));
end;
architecture rtl of e is
signal indata:std_logic_vector(3 downto 0);
begin
process(indata,en)
begin
indata<=d&c&b&a;
if(en='0') then
case indata is
when"0000"=>y<="1111110";
when"0001"=>y<="0110000";
when"0010"=>y<="1101101";
when"0011"=>y<="1111001";
when"0100"=>y<="0110011";
when"0101"=>y<="1011011";
when"0110"=>y<="1011111";
when"0111"=>y<="1110000";
when"1000"=>y<="1111111";
when"1001"=>y<="1111011";
when"1010"=>y<="1110111";
when"1011"=>y<="0011111";
when"1100"=>y<="1001110";
when"1101"=>y<="0111101";
when"1110"=>y<="1001111";
when"1111"=>y<="1000111";
when others=>y<="ZZZZ";
end case;
else
y<="1111111";
end if;
end process;
end;
仿真结果:
四、实验心得
在本次实验中我学会了使用MAX+PLUSII软件的文本编程的方式设计电路。

在本次实验的文本编译环节中出现不少问题:
(1)保存时文件名与实体名不一致,导致程序编译结果不正确。

(2)写程序时没有按照语法规则编写,使得文件编译频繁报错,标点的错误也会导致整个程序无法编译。

相关文档
最新文档