eda直流电机测控仪课程设计


    eda直流电机测控仪课程设计
    1 绪
    11 FPGA背景
    目前高速集成硬件描述语言(VHDL)完成电路设计简 单综合布局快速烧录 FPGA 进行测试现代 IC 设计验证技术流编辑元件实现基逻辑门电路(ANDORXORNOT)者更复杂组合功解码器数学方程式数FPGA里面编辑元件里包含记忆元件例触发器(Flip-flop)者更加完整记忆块系统设计师根需通编辑连接FPGA部逻辑块连接起电路试验板放芯片里出厂成品FPGA逻辑块连接设计者改变FPGA完成需逻辑功
    FPGA般说ASIC(专集成芯片)速度慢法完成复杂设计消耗更电优点快速成品修改改正程序中错误更便宜造价厂商会提供便宜编辑力差FPGA芯片较差编辑力设计开发普通FPGA完成然设计转移类似ASIC芯片外种方法CPLD(复杂编程逻辑器件备)
    12 FPGA发展前景
    FPGA技术正处高速发展时期新型芯片规模越越成越越低低端FPGA已逐步取代传统数字元件高端FPGA断争夺ASIC市场份额先进ASIC生产工艺已FPGA生产越越丰富处理器核嵌入高端FPGA芯片中基FPGA开发成项系统级设计工程着半导体制造工艺提高FPGA 集成度断提高制造成断降低作代ASIC 实现电子系统前景日趋光明
    (1) 容量低电压低功耗FPGA
    容量FPGA 市场发展焦点FPGA 产业中两霸:AlteraXilinx超容量FPGA展开激烈竞争2007年Altera推出65nm工艺StratixIII系列芯片容量67200L E (Logic Element逻辑单元)Xilinx推出65nm工艺VitexVI系列芯片容量33792Slices (Slices约等2L E)采深亚微米(DSM)半导体工艺器件性提高时价格逐步降低便携式应产品发展FPGA 低电压低功耗日益迫切厂家种类型产品瞄准方努力
    (2) 系统级高密度FPGA
    着生产规模提高产品应成降FPGA 应已仅仅适系统接口部件现场集成灵活应系统级(包括核心功芯片)设计中样背景国际FPGA 厂家系统级高密度FPGA 技术发展强调两方面:FPGA IP( Intellec2tual Property 知识产权)硬核IP软核前具IP核系统级FPGA开发体现两方面:方面FPGA 厂商IP硬核(指完成版图设计功单元模块)嵌入FPGA 器件中方面力扩充优化IP软核(指利HDL语言设计综合验证功单元模块)户直接利预定义测试验证IP 核资源效完成复杂片系统设计
    (3) FPGAASIC出现相互融合
    然标准逻辑ASIC 芯片尺寸功强功耗低设计复杂批量求FPGA价格较低廉现场进行编程体积力限功耗ASIC正FPGAASIC正互相融合取长补短着ASIC制造商提供具编程逻辑标准单元FPGA 制造商重新标准逻辑单元发生兴趣
    (4) 动态重构FPGA
    动态重构FPGA指定条件芯片仅具系统重新配置电路功特性具系统动态重构电路逻辑力数字时序逻辑系统动态重构FPGA意义时序逻辑发生通调芯片区域逻辑资源组合成通FPGA 进行局部全局芯片逻辑动态重构实现动态重构FPGA器件编程结构具专门特征部逻辑块部连线改变通读取SRAM中数直接实现样逻辑重构时间纳秒级助实现FPGA系统逻辑功动态构
    13 课程设计务
    课程设计中Altera公司EP2C35系列FPGA芯片利SOPCNIOSIIEP2C35开发板直流电机步进电机模块等资源实现直流电机测控仪
    (1)基技掌握:
    1 掌握时钟作频率控制
    2 掌握十进制计数器设计
    3 掌握16位锁存器设计
    4 掌握显示译码功设计
    (2)基功求
    1 利旋转电位器实现转速控制
    2 利PWM信号实现转速控制
    3 利8位动态七段码显示实现转速显示
    (3)扩展功选择性求
    1 利4×4键盘阵列实现键盘转速控制
    2 利16*16点阵显示实现转速级显示
    2 设计原理
    21 直流电机测控总原理
    直流电机测控仪总体设计硬件图21示FPGAAltera公司EP2C35系列输入设备时钟4*4键盘霍尔器件警报控制开关时钟采1MHZ4*4键盘FPGA输入4位数组信号霍尔器件输入计数脉输出设备直流电机8位7段字符LED数码16*16点阵LED直流电机采直接旋钮控制转速者PWM控制转速8位7段字符LED数码显示分钟转速16*16点阵LED显示速度级



    霍尔器件





    FPGA

    4*4键盘
    直流电机



    时钟1MHZ
    16*16点阵LED




    8位7段字符LED数码



    图21:总体设计硬件框架图

    22 直流电机霍尔器件驱动
    直流电源通电刷接通电枢绕组电枢导体电流流 电磁作样电枢导体会产生磁场时产生磁场磁极磁场产生电磁力电磁力作转子转子定速度开始旋转样电机开始工作







    图22:直流电机结构图
    够测定出电机单位时间转子旋转少周期电机外部电路中加入开关型霍尔器件时电子转子转盘加入够霍尔原件产生输出带磁场磁钢片电机旋转时带动转盘磁钢片起旋转磁钢片旋转霍尔器件方时导致霍尔器件输出端高电变低电磁钢片转霍尔器件方霍尔器件输出端恢复高电输出样电机旋转周会霍尔器件输出端产生低脉通检测单位时间霍尔器件输出端低脉数推算出直流电机单位时间转速直流电机开关型霍尔器件电路原理图图23示:










    图23:直流电机霍尔器件电路图
    直流电机驱动两种方式模拟电驱动电路图43短接旋转实验箱左边旋钮调节旋钮控制速度二通PWM控制电路图65短接PWM信号高电位选通三极直流电机转动直流电机获较转速样电机左边旋钮调较位置
    23 键盘驱动
    键盘电位扫描确定前键没单键电路图24示键没时判断电位点获取高电位键时判断电位低电位样通判断点电位高低确定键没

    图24:单键电路图
    4*4键盘FPGA连接图图34示扫描键盘FPGA8控制端口确定控制行端口设置buffer模式控制列端口设置in模式扫描键盘方法先第行键盘低电余行列高电读取列电位值果没键电位判断端口获取高电位果键电位判断点电全零电位值第位零确定前行键次四行键盘扫描扫描结束输出4位数组信号告诉键

    图25 4*4键盘电路图
    24 8位7段数码驱动
    七段数码电子开发程中常输出显示设备实验系统中两四位体阴极型七段数码单静态数码图26示高点点亮数码相应数码段










    图26 :静态七段数码










    图27:8位7段数码驱动
    图27 8位7段数码连接七段数码公端连接GND(阴极型)数码中段输入高电相应段点亮反亮四位体七段数码单静态数码基础加入选择位数码位选信号端口八数码abcdefghdp连起8数码分位选信号控制选通数码显示数余关闭
    25 16*16点LED阵列驱动
    单LED电路图28示单LED电路图Rn输入高电时Cn输入低电时电路形成回路LED发光LED点阵应点点亮



    图28:单LED电路图
    设计完成速度级(015)点阵LED显示 16*16点阵LED扫描工作原理8位扫描数码类似显示方式结果样已16*16点阵256LED通排列组合形成16行*16列矩阵式LED阵列








    图29:16*16点阵硬件图
    16*16点阵LED驱动时次选通LED点阵行端口次选通端口(Cn)字符译码第N列结果列端口(Rn)输入通高速次点亮led点阵led点阵显示数字
    26 PWM控制原理
    PWM控制脉宽度进行调制技术通系列脉宽度进行调制等效获需波形
    图210示设定值计数器设置PWM信号占空U\D1输入CLK2设定值计数值输出值增加PWM占空增加电机转速加快U\D0输入CLK2设定值计算器输出值减PWM占空减电机转速变慢CLK0作锯齿波计数器输出周期性线性增加锯齿波计数值设定值时数字较器输出低电计数值设定值时数字较器输出高电产生周期性PWM波形旋转反控制电路控制直流电动机转启停该电路两2选1路选择器组成Z\F键控制选择PWM波形正端Z进入H桥负端进入H桥控制电机旋转方START键通门控制PWM输出实现电机工作停止控制H桥电路功率晶体组成PWM波形通方控制电路送H桥功率放驱动电机转动


    图210 PWM控制电路原理图

    3 程序设计
    31 总体程序设计思路
    程序总体设计分时钟控制信号模块十进制计数模块显示模块键盘模块pwm控制模块十六位锁存模块彩色led蜂鸣器控制模块设计思路十进制计数器霍尔器件脉数计数时钟控制六秒时计数值锁存16位锁存器显示模块7段数码显示锁存器锁存值时键盘模块送出键盘键值点阵LED显示数值
    32 时钟控制信号程序设计
    时钟控制信号中级锁存模块提供锁存控制型号时计数模块提清零信号蜂鸣器提供1khz时钟设计中Cnttemp1MHZ升缘计数产生1HZ信号(Cnttemp<5000送出高电Cnttemp>5000送出低电)Count秒信号计数锁存控制信号第六秒结束时送出清零信号第7秒送出先产生秒脉

    Clk1hz’1’

    Clk1hz’1’
    Cnttemp<50000
    Cnttemp0
    Cnttemp+1
    Cnttemp前计数否99999
    1M时钟







    Count6较






    Enal’0’
    Clr’1’
    Load’0’

    Enal’0’
    Clr’0’
    Load’1’
    Enal’1’
    Clr’0’
    Load’0’






    输出
    图31:时钟控制信号流程图
    注:Enal输出控制计数器信号
    Clr输出控制计数器清零信号
    Load输出控制锁存器锁存信号





    图32: 时钟控制信号模块
    33 十进制计数器程序设计
    设计中显示前直流电机转速4位十进制计数器转速脉计数设计中需设计位十进制计数器设计中特注意进位脉处理
    设计流程:
    Count1001
    Clr0’ena1’


    计数脉


    Coun<0000
    Count



    输出计数值
    输出进位脉




    图33:十进制计数器程序设计流程图
    注:CLR外部输入清零信号
    ENA外部输入计数信号
    十进制计数器计数脉计数计数值9时计数值重新零时零时输出进位脉


    图34十进制计数模块
    34 锁存模块程序设计
    16位锁存模块设计较简单控制信号高电时锁存前输入信号值低电时保持锁存锁存输入信号
    Load1’



    DINDIN

    OUT

    图35 16位锁存器设计流程
    注:IN16位输入信号OUT16位输出信号LOAD输入锁存信号
    信号DININ信号进行保存LOAD’1’时IN信号保存DINDIN传递OUT

    图36 16位锁存模块
    35 PWM控制信号程序设计
    PWM控制信号驱动直流电机转速信号PWM控制四输入信号控制pwm占空设计中高1516控制信号1111获低0控制信号0000获
    流程

    时钟1MHZ
    Count0
    Count16000




    PWM’1’
    PWM’0’
    Count+1
    datatcoundatain*1000










    输出pwm控制信号
    图37:PWM控制流程图
    注:DATAIN输入数
    COUNT时钟016000循环计数COUNT0时输出电置高电COUNT输入值*1000时输出电置低电样通外部输入控制占空控制直流电机转速

    图38:PWM控制模块
    36 键盘扫描显示模块程序设计
    (1)键盘扫描程序设计
    PWM控制直流电机通扫描键盘键控制方波占空键值越方波占空越高达1516低0键盘扫描输出4数组扫描简单行低电列获电位确定行键体流程:


    时钟1MHZ输入
    Count+1
    Count<0
    Count2
    扫描第三行

    Count1
    扫描第二行

    Count3

    Count3
    扫描第四行

    Count0
    扫描第行











    判断键
    输出相应键值

    判断键
    输出相应键值
    图39:键盘扫描流程图
    键盘模块体设计思路信号COUNT时钟03循环计数CONTN时第N列扫描判断列端电位确定前键键位输出键值

    (2)显示模块程序设计
    显示模块分两部分分8位7段数码led16*16点阵LED硬件连接突(7段数码7段点阵led列低8列连接FPGA统脚)两显示部分统模块驱动分时段分驱动8位7段数码led16*16点阵LED

    COUNT<00000
    COUNT10111显示第十六列LED点阵

    COUNT01000显示第列LED点阵

    COUNT00111显示第八位LED

    COUNT00000显示第位LED
    COUNT+1
    COUNT10111
    时钟1MHZ















    图310:显示模块程序流程
    显示程序中十进制计数器百十位数输入分8位7段数码第三四五位显示设计中记录六秒钟转速显示分钟转速第六位LED数码显示0数码显示横线设计中注意输入4位数组译成LED数码显示7段码(0001译码01100000)点阵LED显示需译码列译码点阵LED次点亮列高速点亮阵面显示汉字者数字


    图311:键盘扫描显示模块

    37警报控制彩色LED模块程序设计
    模块添加设计模块考虑直流电机转速划分高中低三等次高速转速超4000RMIN低速转速低2000RMIN中速介两者间红绿蓝三彩色LED 显示前速度属速度层次设计中外5000RMIN 设警戒速度电机转速超警戒速度时会触发警报(扬声器发出间隔1 秒响声)然超警戒速度警报通警报开关关闭

    图312:警报控制彩色LED模块

    4 设计程介绍
    41 设计程
    (1)测速显示
    电机旋转时带动转盘磁钢片起旋转磁钢片旋转霍尔器件方时导致霍尔器件输出端高电变低电磁钢片转霍尔器件方霍尔器件输出端恢复高电输出样电机旋转周会霍尔器件输出端产生低脉通检测单位时间霍尔器件输出端低脉数推算出直流电机单位时间转速
    电机转速通常指分钟电机转速单位rpm实际测量程中减少转速刷新时间通常5~10秒刷新次果6秒钟刷新次相记录6秒钟电机转数记录数10分钟转速数数码显示出显示数够数码显示稳定数输出时加入16位锁存器锁存数送数码显示样会计数程中数变化数码显示断变化
    (2)pwm产生控制
    通控制占空达控制直流电机控制键先预设速度值电动机实际转速预设值较果相等调节占空达预设值
    42 遇问题解决方案
    问题:PWM 控制方式直流电机速度太低
    解决方法:初始时发现旋律控制时直流电机速度提升PWM控制时速度低初PWM周期太长发现周期缩短然济事怕PWM信号占空1直流电机速度然非常低查阅电路图发现PWM信号高电位选通三极驱动直流电机决定直流电机获电压电机左边旋钮控制需旋钮调提高PWM控制方式直流电机转速
    问题二:数码显示速度跳动
    解决方法:通占空100分频调1000样占空没变化1速度变化会减少
    43 设计体会
    次课程设计期2周两周中历什懂解逐渐熟悉EDA软件VHDL语言运程程中学书学东西时巩固前学知识做子模块编写时候遇问题开始时什知道网搜集资料查老师资料懂问老师弄清中原理次练逐渐够解决编写程序中问题模块编写出然仿真时遇点困难想结果正确显示结果点点分析错误中思考产生错误原修改电路图终想结果完成次课程设计
    通次课程设计懂理实际相结合重理知识远远够学理知识实践相结合起理中出结提高实际动手力独立思考力真正社会服务
    感谢组成员基础懂感谢两周私帮助细心讲解感谢予悉心指导老师两周中亏您厌烦指教谢谢
    参考文献
    [1] SOPCIIEDA实验指导书(第二版)
    [2] SOPCII手册(第二版)
    [3] EDA技术基础 谭会生编著 湖南学出版社2004
    [4] EDA技术实教程(第二版)潘松黄继业编著 科学出版社 2005



    附录A:设计程序
    时钟控制信号模块程序

    library ieee
    use ieeestd_logic_1164all
    use ieeestd_logic_arithall
    use ieeestd_logic_unsignedall

    entity teltcl is
    port( Clk in std_logic 时钟输入1Mhz
    ena out std_logic 允许计数
    clr out std_logic 计数器清零信号产生
    clkhz out std_logic 秒脉信号产生
    clkkhz out std_logic 1KHZ脉产生
    load out std_logic 锁存显示输出允许
    )
    end teltcl

    architecture behave of teltcl is
    signal clk1hz std_logic1HZ时钟信号
    signal clk1khz std_logic
    signal count std_logic_vector(2 downto 0)6秒计数
    signal clr1 std_logic清零信号
    signal ena1 std_logic允许计数信号
    signal load1 std_logic允许计数信号
    signal cq1cq2cq3cq4 INTEGER RANGE 0 TO 15计数数

    begin
    process(clk) 1HZ信号产生
    variable cnttemp INTEGER RANGE 0 TO 999999
    variable count integer range 0 to 999
    begin
    IF clk'1' AND clk'event THEN
    IF cnttemp999999 THEN cnttemp0
    ELSE
    IF cnttemp<500000 THEN clk1hz<'1'
    ELSE clk1hz<'0'
    END IF
    cnttempcnttemp+1
    END IF
    if count999 then count0
    else
    if count<500 then clk1khz<'1'
    else clk1khz<'0'
    end if
    countcount+1
    end if
    end if
    clkhz end process
    process(Clk1hz)6秒计数
    begin
    if(Clk1hz'event and Clk1hz'1') then
    count if count<6 then
    ena1<'1'load1<'0'clr1<'0'
    elsif count6 then
    load1<'1'ena1<'0'clr1<'0'
    elsif count7 then
    ena1<'0'load1<'0'clr1<'1'
    end if
    end if
    ena end process
    end behave

    十进制计数器模块程序
    LIBRARY IEEE
    USE IEEESTD_LOGIC_1164ALL
    ENTITY CNT10 IS
    PORT (CLKIN STD_LOGIC 计数时钟信号
    CLRIN STD_LOGIC 清零信号
    ENAIN STD_LOGIC 计数信号
    CQ OUT INTEGER RANGE 0 TO 15 4位计数结果输出
    CARRY_OUTOUT STD_LOGIC) 计数进位

    END CNT10
    ARCHITECTURE ART OF CNT10 IS
    SIGNAL CQI INTEGER RANGE 0 TO 15
    BEGIN
    PROCESS(CLKENA) IS
    BEGIN
    IF CLR '1' THEN CQI< 0 计数器异步清零
    elsIF CLK'EVENT AND CLK '1' THEN
    IF ENA '1' THEN
    iF CQI10 THEN cqi<1
    ELSE CQI END IF 等9计数器清零
    END IF
    END IF
    END PROCESS
    PROCESS (CQI) IS
    BEGIN
    IF CQI10 THEN CARRY_OUT< '1' 进位输出
    ELSE CARRY_OUT< '0'
    END IF
    END PROCESS
    CQEND ART

    键盘扫描显示程序
    library ieee
    use ieeestd_logic_1164all
    use ieeestd_logic_arithall
    use ieeestd_logic_unsignedall

    entity exp13 is
    port( Clk in std_logic 时钟信号
    buff1buff2buff3buff4 in integer range 0 to 9
    Kr in std_logic_vector(3 downto 0) 键盘行
    Kc buffer std_logic_vector(3 downto 0) 键盘列
    abcdefgdp out std_logic
    Sasbsc buffer std_logic 七段码片选
    dot_c OUT STD_LOGIC_VECTOR(15 DOWNTO 0)
    dot_r out std_logic_vector(7 downto 0)
    yangbo out integer range 0 to 15
    led out std_logic_vector(7 downto 0)
    )
    end exp13

    architecture behave of exp13 is
    signal keyrkeyc std_logic_vector(3 downto 0)
    signal kcount std_logic_vector(2 downto 0)
    signal dcount std_logic_vector(1 downto 0)
    signal kflag1kflag2 std_logic
    signal buff8 integer range 0 to 15
    signal Disp_Temp integer range 0 to 15 扫描键值
    signal Disp_Decode std_logic_vector(7 downto 0)
    signal s std_logic_vector(3 downto 0)
    signal key std_logic_vector(15 downto 0)


    FUNCTION seg_code(a in integer) return std_logic_vector is
    begin
    case a is
    when 0>return 00111111 '0'
    when 1>return 00000110 '1'
    when 2>return 01011011 '2'
    when 3>return 01001111 '3'
    when 4>return 01100110 '4'
    when 5>return 01101101 '5'
    when 6>return 01111101 '6'
    when 7>return 00000111 '7'
    when 8>return 01111111 '8'
    when 9>return 01101111 '9'
    when 10>return 01110111 'A'
    when 11>return 01111100 'b'
    when 12>return 00111001 'C'
    when 13>return 01011110 'd'
    when 14>return 01111001 'E'
    when 15>return 01110001 ''
    when others>return 00000000 全灭
    end case
    end seg_code
    begin

    yangbo Disp_Temp a b c d e f g dp process(clk) 扫描键盘
    begin
    if(Clk'event and Clk'1') then
    if(Kr1111) then
    kflag1<'0'
    kcount if(kcount0) then
    kc<1110
    elsif(kcount1) then
    kc<1101
    elsif(kcount2) then
    kc<1011
    else
    kc<0111
    end if
    else
    kflag1<'1'
    keyr keyc end if
    kflag2 end if
    end process
    process(Clk) 获取键值
    begin
    if(Clk'event and Clk'1') then
    if(kflag1'1' and kflag2'0') then
    if(keyr0111) then
    case keyc is
    when 0111>buff8<1
    when 1011>buff8<4
    when 1101>buff8<7
    when 1110>buff8<14
    when others>buff8 end case
    elsif(keyr1011) then
    case keyc is
    when 0111>buff8<2
    when 1011>buff8<5
    when 1101>buff8<8
    when 1110>buff8<0
    when others>buff8 end case
    elsif(keyr1101) then
    case keyc is
    when 1110>buff8<15
    when 1101>buff8<9
    when 1011>buff8<6
    when 0111>buff8<3
    when others>buff8 end case
    elsif(keyr1110) then
    case keyc is
    when 1110>buff8<13
    when 1101>buff8<12
    when 1011>buff8<11
    when 0111>buff8<10
    when others>buff8 end case
    end if
    end if
    end if

    end process
    process(clk)
    begin
    if(clk'event and clk'1') then 扫描累加
    dcount case dcount is
    when 00> Disp_Decode when 01> Disp_Decode when 10> Disp_Decode when 11> Disp_Decode end case
    sa sb sc<'0'
    end if
    end process
    process (clk)
    begin
    if (clk'event and clk'1')then
    s if (s1111) then
    s<1000
    end if
    end if
    end process
    process (s)
    begin
    case s is
    when 1000>dot_r<01111111
    when 1001>dot_r<10111111
    when 1010>dot_r<11011111
    when 1011>dot_r<11101111
    when 1100>dot_r<11110111
    when 1101>dot_r<11111011
    when 1110>dot_r<11111101
    when 1111>dot_r<11111110
    when others>dot_r<11111111
    end case
    end process
    process(sDisp_Temp)
    begin
    if (Disp_Temp0) then
    led<11000000 十位LED显示0
    case s is
    when 1000>dot_c when 1001>dot_c when 1010>dot_c when 1011>dot_c when 1100>dot_c when 1101>dot_c when 1110>dot_c when 1111>dot_c when others>dot_c<0000000000000000
    end case
    elsif (Disp_Temp1) then
    led<11000000 十位LED显示0
    case s is
    when 1000>dot_c when 1001>dot_c when 1010>dot_c when 1011>dot_c when 1100>dot_c when 1101>dot_c when 1110>dot_c when 1111>dot_c when others>dot_c end case
    elsif (Disp_Temp2) then
    led<11000000 十位LED显示0
    case s is
    when 1000>dot_c<0000000000000000 列显示2
    when 1001>dot_c<0111000001110000
    when 1010>dot_c<0100100000001000
    when 1011>dot_c<0100010000001000
    when 1100>dot_c<0100001000001000
    when 1101>dot_c<0100000100001000
    when 1110>dot_c<0110000011110000
    when 1111>dot_c<0000000000000000
    when others>dot_c<0000000000000000
    end case
    elsif (Disp_Temp3) then
    led<11000000 十位LED显示0
    case s is
    when 1000>dot_c<0000000000000000 列显示3
    when 1001>dot_c<0001100000011000
    when 1010>dot_c<0010000000000100
    when 1011>dot_c<0100000010000010
    when 1100>dot_c<0100000010000010
    when 1101>dot_c<0010000101000100
    when 1110>dot_c<0001111000111000
    when 1111>dot_c<0000000000000000
    when others>dot_c<0000000000000000
    end case
    elsif (Disp_Temp4) then
    led<11000000 十位LED显示0
    case s is
    when 1000>dot_c<0000000000000000 列显示4
    when 1001>dot_c<0000000111100000
    when 1010>dot_c<0000000100010000
    when 1011>dot_c<0000000100001000
    when 1100>dot_c<0000000100000000
    when 1101>dot_c<0011111111111110
    when 1110>dot_c<0000000100000000
    when 1111>dot_c<0000000000000000
    when others>dot_c<0000000000000000
    end case
    elsif (Disp_Temp5) then
    led<11000000 十位LED显示0
    case s is
    when 1000>dot_c<0000000000000000 列显示5
    when 1001>dot_c<0001100111111100
    when 1010>dot_c<0010000010000100
    when 1011>dot_c<0010000001000100
    when 1100>dot_c<0010000001000100
    when 1101>dot_c<0001000010000100
    when 1110>dot_c<0000111100000100
    when 1111>dot_c<0000000000000000
    when others>dot_c<0000000000000000
    end case
    elsif (Disp_Temp6) then
    led<11000000 十位LED显示0
    case s is
    when 1000>dot_c<0000000000000000 列显示6
    when 1001>dot_c<0000011111110000
    when 1010>dot_c<0000100010001000
    when 1011>dot_c<0001000001000100
    when 1100>dot_c<0010000001000100
    when 1101>dot_c<0010000010001100
    when 1110>dot_c<0001111000000000
    when 1111>dot_c<0000000000000000
    when others>dot_c<0000000000000000
    end case
    elsif (Disp_Temp7) then
    led<11000000 十位LED显示0
    case s is
    when 1000>dot_c<0000000000000000 列显示7
    when 1001>dot_c<0000000000011100
    when 1010>dot_c<0000000000000010
    when 1011>dot_c<0011111100000010
    when 1100>dot_c<0000000011000010
    when 1101>dot_c<0000000000110010
    when 1110>dot_c<0000000000001100
    when 1111>dot_c<0000000000000000
    when others>dot_c<0000000000000000
    end case
    elsif (Disp_Temp8) then
    led<11000000 十位LED显示0
    case s is
    when 1000>dot_c<0000000000000000 列显示8
    when 1001>dot_c<0001111000111100
    when 1010>dot_c<0010000101000010
    when 1011>dot_c<0010000010000010
    when 1100>dot_c<0010000010000010
    when 1101>dot_c<0010000101000010
    when 1110>dot_c<0001111000111100
    when 1111>dot_c<0000000000000000
    when others>dot_c<0000000000000000
    end case
    elsif (Disp_Temp9) then
    led<11000000 十位LED显示0
    case s is
    when 1000>dot_c<0000000000000000 列显示9
    when 1001>dot_c<0001000000111000
    when 1010>dot_c<0010000001000100
    when 1011>dot_c<0100000010000010
    when 1100>dot_c<0100000010000010
    when 1101>dot_c<0010000001000100
    when 1110>dot_c<0000111111111000
    when 1111>dot_c<0000000000000000
    when others>dot_c<0000000000000000
    end case
    elsif (Disp_Temp10) then
    led<11111001 十位LED显示1
    case s is
    when 1000>dot_c when 1001>dot_c when 1010>dot_c when 1011>dot_c when 1100>dot_c when 1101>dot_c when 1110>dot_c when 1111>dot_c when others>dot_c end case
    elsif (Disp_Temp11) then
    led<11111001 十位LED显示1
    case s is
    when 1000>dot_c when 1001>dot_c when 1010>dot_c when 1011>dot_c when 1100>dot_c when 1101>dot_c when 1110>dot_c when 1111>dot_c when others>dot_c end case
    elsif (Disp_Temp12) then
    led<11111001 十位LED显示1
    case s is
    when 1000>dot_c<0000000000000000 列显示2
    when 1001>dot_c<0111000001110000
    when 1010>dot_c<0100100000001000
    when 1011>dot_c<0100010000001000
    when 1100>dot_c<0100001000001000
    when 1101>dot_c<0100000100001000
    when 1110>dot_c<0110000011110000
    when 1111>dot_c<0000000000000000
    when others>dot_c<0000000000000000
    end case
    elsif (Disp_Temp13) then
    led<11111001 十位LED显示1
    case s is
    when 1000>dot_c<0000000000000000 列显示3
    when 1001>dot_c<0001100000011000
    when 1010>dot_c<0010000000000100
    when 1011>dot_c<0100000010000010
    when 1100>dot_c<0100000010000010
    when 1101>dot_c<0010000101000100
    when 1110>dot_c<0001111000111000
    when 1111>dot_c<0000000000000000
    when others>dot_c<0000000000000000
    end case
    elsif (Disp_Temp14) then
    led<11111001 十位LED显示1
    case s is
    when 1000>dot_c<0000000000000000 列显示4
    when 1001>dot_c<0000000111100000
    when 1010>dot_c<0000000100010000
    when 1011>dot_c<0000000100001000
    when 1100>dot_c<0000000100000000
    when 1101>dot_c<0011111111111110
    when 1110>dot_c<0000000100000000
    when 1111>dot_c<0000000000000000
    when others>dot_c<0000000000000000
    end case
    elsif (Disp_Temp15) then
    led<11111001 十位LED显示1
    case s is
    when 1000>dot_c<0000000000000000 列显示5
    when 1001>dot_c<0001100111111100
    when 1010>dot_c<0010000010000100
    when 1011>dot_c<0010000001000100
    when 1100>dot_c<0010000001000100
    when 1101>dot_c<0001000010000100
    when 1110>dot_c<0000111100000100
    when 1111>dot_c<0000000000000000
    when others>dot_c<0000000000000000
    end case
    end if
    end process
    end behave

    16位锁存器模块程序设计
    LIBRARY IEEE
    USE IEEESTD_LOGIC_1164ALL
    ENTITY REG32B IS
    PORT(LOAD IN STD_LOGIC
    DIN IN STD_LOGIC_VECTOR(15 DOWNTO 0)
    DOUT OUT STD_LOGIC_VECTOR(15 DOWNTO 0))
    END ENTITY REG32B

    ARCHITECTURE ART OF REG32B IS
    BEGIN
    PROCESS ( LOAD DIN ) IS
    BEGIN
    IF LOAD 'EVENT AND LOAD '1'
    THEN DOUT END IF
    END PROCESS
    END ART

    PWM信号控制模块
    library ieee
    use ieeestd_logic_1164all
    use ieeestd_logic_arithall
    use ieeestd_logic_unsignedall
    entity pwm is
    port( pwmin in std_logic_vector(3 downto 0) pwm信号输入
    clk in std_logic 时钟
    pwmout out std_logic 电机控制信号
    )
    end pwm
    architecture behave of pwm is
    signal cycle integer range 0 to 16000
    signal keynum integer range 0 to 15
    begin
    process(clk)
    begin
    if clk'event and clk'1' then
    if cycle16000 then
    pwmout<'1'cycle<0
    elsif cyclekeynum*1000 then
    pwmout<'0'cycle else
    cycle end if
    end if
    end process
    process(pwmin)
    begin
    case pwmin is
    when 0000 > keynum <0
    when 0001 > keynum <1
    when 0010 > keynum <2
    when 0011 > keynum <3
    when 0100 > keynum <4
    when 0101 > keynum <5
    when 0110 > keynum <6
    when 0111 > keynum <7
    when 1000 > keynum <8
    when 1001 > keynum <9
    when 1010 > keynum <10
    when 1011 > keynum <11
    when 1100 > keynum <12
    when 1101 > keynum <13
    when 1110 > keynum <14
    when 1111 > keynum <15
    when others > null
    end case
    end process
    end behave

    警报控制彩色LED模块程序设计
    library ieee
    use ieeestd_logic_1164all
    use ieeestd_logic_arithall
    use ieeestd_logic_unsignedall
    entity speedled is
    port( speed in integer range 0 to 15
    clkhz in std_logic
    sbell in std_logic
    bell out std_logic
    d_speed out std_logic
    sled out std_logic_vector(2 downto 0)
    yang out std_logic
    )
    end speedled
    architecture behave of speedled is
    signal count integer range 0 to 3000
    signal waring std_logic
    begin
    process(speed)
    begin
    if speed<4 then sled<100waring<'1'yang<'0'
    elsif speed>9 then
    if speed>10 then
    waring else
    sled<001waring<'1'yang<'0'
    end if
    else sled<010waring<'1'yang<'0'
    end if
    end process
    process(waring)
    begin
    if waring'event and waring'1' then
    if count2000 then
    count<0d_speed<'0'
    elsif count2 then
    count else
    count end if
    end if
    if sbell'0' then
    if count<1000 then
    bell end if
    end if
    end process
    end behave

    声音模块

    library ieee
    use ieeestd_logic_1164all
    use ieeestd_logic_arithall
    use ieeestd_logic_unsignedall

    entity audio is
    port( clk in std_logic Clock Signal
    spk buffer std_logic) speaker driver
    end audio

    architecture behave of audio is
    signal tone std_logic_vector(10 downto 0)
    signal tone_count std_logic_vector(10 downto 0)
    signal tone_index integer range 0 to 15
    signal clk10_count std_logic_vector(17 downto 0)
    signal time integer range 0 to 150
    signal clk10 std_logic
    begin
    process(clk) generate 10hz clock signal
    begin
    if(clk'event and clk'1') then
    clk10_count if(clk10_count16#3fff#) then
    clk10 end if
    end if
    end process
    process(clk10)
    begin
    if(clk10'event and clk10'1') then
    if(time150) then
    time<0
    else
    time end if
    end if
    end process
    process(clk10)
    begin
    if(clk10'event and clk10'1') then
    case time is
    when 0>tone_index<3
    when 1>tone_index<3
    when 2>tone_index<3
    when 3>tone_index<3
    when 4>tone_index<5
    when 5>tone_index<5
    when 6>tone_index<5
    when 7>tone_index<6
    when 8>tone_index<8
    when 9>tone_index<8
    when 10>tone_index<8
    when 11>tone_index<9
    when 12>tone_index<6
    when 13>tone_index<8
    when 14>tone_index<5
    when 15>tone_index<5
    when 16>tone_index<12
    when 17>tone_index<12
    when 18>tone_index<12
    when 19>tone_index<15
    when 20>tone_index<13
    when 21>tone_index<12
    when 22>tone_index<10
    when 23>tone_index<12
    when 24>tone_index<9
    when 25>tone_index<9
    when 26>tone_index<9
    when 27>tone_index<9
    when 28>tone_index<9
    when 29>tone_index<9
    when 30>tone_index<0
    when 31>tone_index<0
    when 32>tone_index<9
    when 33>tone_index<9
    when 34>tone_index<9
    when 35>tone_index<10
    when 36>tone_index<7
    when 37>tone_index<7
    when 38>tone_index<6
    when 39>tone_index<6
    when 40>tone_index<5
    when 41>tone_index<5
    when 42>tone_index<5
    when 43>tone_index<6
    when 44>tone_index<8
    when 45>tone_index<8
    when 46>tone_index<9
    when 47>tone_index<9
    when 48>tone_index<3
    when 49>tone_index<3
    when 50>tone_index<8
    when 51>tone_index<8
    when 52>tone_index<6
    when 53>tone_index<5
    when 54>tone_index<6
    when 55>tone_index<8
    when 56>tone_index<5
    when 57>tone_index<5
    when 58>tone_index<5
    when 59>tone_index<5
    when 60>tone_index<5
    when 61>tone_index<5
    when 62>tone_index<0
    when 63>tone_index<0
    when 64>tone_index<10
    when 65>tone_index<10
    when 66>tone_index<10
    when 67>tone_index<12
    when 68>tone_index<7
    when 69>tone_index<7
    when 70>tone_index<9
    when 71>tone_index<9
    when 72>tone_index<6
    when 73>tone_index<8
    when 74>tone_index<5
    when 75>tone_index<5
    when 76>tone_index<5
    when 77>tone_index<5
    when 78>tone_index<5
    when 79>tone_index<5
    when 80>tone_index<5
    when 81>tone_index<0
    when 82>tone_index<0
    when 83>tone_index<3
    when 84>tone_index<5
    when 85>tone_index<3
    when 86>tone_index<5
    when 87>tone_index<5
    when 88>tone_index<6
    when 89>tone_index<7
    when 90>tone_index<9
    when 91>tone_index<6
    when 92>tone_index<6
    when 93>tone_index<6
    when 94>tone_index<6
    when 95>tone_index<6
    when 96>tone_index<6
    when 97>tone_index<5
    when 98>tone_index<6
    when 99>tone_index<8
    when 100>tone_index<8
    when 101>tone_index<8
    when 102>tone_index<9
    when 103>tone_index<12
    when 104>tone_index<12
    when 105>tone_index<12
    when 106>tone_index<10
    when 107>tone_index<9
    when 108>tone_index<9
    when 109>tone_index<10
    when 110>tone_index<9
    when 111>tone_index<8
    when 112>tone_index<8
    when 113>tone_index<6
    when 114>tone_index<5
    when 115>tone_index<3
    when 116>tone_index<3
    when 117>tone_index<3
    when 118>tone_index<3
    when 119>tone_index<8
    when 120>tone_index<8
    when 121>tone_index<8
    when 122>tone_index<8
    when 123>tone_index<6
    when 124>tone_index<8
    when 125>tone_index<6
    when 126>tone_index<5
    when 127>tone_index<3
    when 128>tone_index<5
    when 129>tone_index<6
    when 130>tone_index<8
    when 131>tone_index<5
    when 132>tone_index<5
    when 133>tone_index<5
    when 134>tone_index<5
    when 135>tone_index<5
    when 136>tone_index<5
    when 137>tone_index<5
    when 138>tone_index<0
    when 139>tone_index<0
    when others>tone_index<0
    end case
    end if
    end process
    process(tone_index)
    begin
    case tone_index is
    when 0>tone<11111111111 no output
    when 1>tone<01100000101 773
    when 2>tone<01110010000 912
    when 3>tone<10000001100 1036
    when 5>tone<10010101101 1197
    when 6>tone<10100001010 1290
    when 7>tone<10101011100 1372
    when 8>tone<10110000010 1410
    when 9>tone<10111001000 1480
    when 10>tone<11000000110 1542
    when 12>tone<11001010110 1622
    when 13>tone<11010000100 1668
    when 15>tone<11011000000 1728
    when others>tone<11111111111 othersno output
    end case
    end process
    process(clk) control the frequence of the speaker
    begin
    if(clk'event and clk'1') then
    if(tone_count16#7ff#) then
    tone_count if(tone<2047) then
    spk end if
    else
    tone_count end if
    end if
    end process
    end behave






    附录B:总模块设计图

    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 8 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    EDA课程设计时钟

    EDA课程设计姓名: 学号:班级:自动化设计题目多功能数字钟电路设计设计任务及要求多功能数字钟应该具有的功能有:显示时—分—秒、小时和分钟可调等基本功能。整个钟表的工作应该是在1Hz信号的作用...

    3年前   
    740    0

    EDA与数字系统课程设计

     课 程 设 计 任 务 书(2011 ~2012 第三学期)设 计 题 目: EDA与数字系统课程设计 学 院 名 称: 电气与自动化工程学院 专 业(班 级...

    3年前   
    548    0

    直流电机双闭环调速系统设计课程设计

    直流电机双闭环调速系统设计目录1 绪 论 11.1课题研究背景 11.2研究双闭环直流调速系统的目的和意义 12 直流电机双闭环调速系统 32.1直流电动机的起动与调速 32.2直流调速系统...

    3年前   
    687    0

    双闭环直流电机调速系统设计课程设计

    《自动控制系统论文设计报告》班级:自动化 姓 名 : 学 号 : 时 间 : 2012年X月X号指 导 老 师: 大连XX 大 学 信 息 ...

    3年前   
    579    0

    eda拔河游戏机课程设计报告

    报告书写要求1、 报告的撰写要求条理清晰、语言准确、表述简明。报告中段首空两个字符,中文字体为宋体五号,数字、字符、字母为Times New Roman五号,且单倍行距。2、 报告中插图应与文...

    3年前   
    526    0

    燕山大学EDA课程设计游戏机

    燕山大学EDA课程设计游戏机一、设计题目及要求1、设计题目:游戏机。2、题目要求:用三位数码管显示0—7之间的数码,按下按钮,三个数码管循环显示,抬起按钮,显示停止,当显示内容相同时,为赢。*...

    6个月前   
    174    0

    EDA课程设计报告60秒倒计时器MAXII240T

    EDA课程设计报告设计题目:基于verilog的倒计时器设计 专业班级: 姓名学号: ...

    4年前   
    729    0

    EDA课程设计报告书电话按键显示器

    EDA课程设计报告书 题目:电话按键显示器 姓名: 班级:10级电子信息工程班 学号: 成绩: 一、 设计题目及要求 ...

    1年前   
    268    0

    合肥工业大学EDA课程设计频率计

     课 程 设 计 任 务 书(2014 ~2015第三学期)设 计 题 目: EDA与数字系统课程设计 学 院 名 称: 电气与自动化工程学院 专 业(班 级)...

    3年前   
    478    0

    测控技术与仪器实习总结

    测控技术与仪器实习总结  读了三年的大学,然而大多数人对本专业的认识还是寥寥无几,在测控技术与仪器周围缠绕不定,在大二期末学院曾为我们组织了一个星期的见习,但由于当时所学知识涉及本专业知识不多...

    12年前   
    487    0

    测控技术与仪器生产实习报告

    测控技术与仪器生产实习报告  大学三年已经接近尾声,然而我们对测控这门专业一直都是理性认识,接触的实物很少,对未来的就业发展方向依旧迷茫。本学期学校组织了一次外出生产实习,好让我们接触目前的主...

    10年前   
    476    0

    实习总结-测控技术与仪器

    实习总结---测控技术与仪器  ��元式空调机,洁净式空调机,恒温恒湿型机房专用空调机,屋顶式空调机,高温环境特种空调机,除湿机,冷水机组成风机盘管、柜式风机盘管和组合式空气处理机等末端设备。...

    12年前   
    529    0

    测控技术与仪器认识实习报告

    测控技术与仪器认识实习报告  学     院:机电工程学院班     级:测控技术与仪器09-1学     号:540902030116姓     名:  完成时间: XX.01.10认识实习...

    12年前   
    626    0

    交通信号灯控制器设计EDA课程设计

    信息科学技术学院《EDA技术课程设计报告》专业班级:2008级通信工程姓 名: 学 号:指导老师: 目 录课程设计的要求及目的……………………………………………2前言…………………………...

    10个月前   
    292    0

    数字电子钟逻辑电路设计《EDA技术》课程设计报告

    序号 综合成绩优秀( )良好( )中等( )及格( )不及格( )教师(签名)批改日期《EDA技术》课程设计报告 ...

    3年前   
    527    0

    eda课程设计vhdl语言的简易出租车计费器设计

    XX 学 院《EDA技术》课 程 设 计 题 目 简易出租车计费器设计 系 (部) 信息工程系 班 级 电本班 ...

    3年前   
    529    0

    集成电路EDA技术

    本文简述了集成电路的传统设计方法和现代设计方法,并对两者的区别进行了比较,以实例为基础介绍了集成电路的设计过程。对可编程逻辑器件的定义、分类、功能等进行详尽的阐述,介绍了可编程逻辑器件的设计过程...

    4年前   
    1414    0

    测控技术与仪器实习总结—个人工作总结

    测控技术与仪器实习总结—个人工作总结     读了三年的大学,然而大多数人对本专业的认识还是寥寥无几,在测控技术与仪器周围缠绕不定,在大二期末学院曾为我们组织了一个星期的见习,但由于当时所学知...

    10年前   
    333    0

    大学生实习报告范文(测控技术与仪器)

    大学生实习报告范文(测控技术与仪器)  <>干式变压器产品特点:   1、安全,难燃防火,无污染,可直接安装在负荷中心。  2、免维护、安装简便,综合运行成本低。  3、防潮性能好,可在100...

    12年前   
    501    0

    2021年大学生测控技术与仪器实习总结

     2021年大学生测控技术与仪器实习总结撰写人:___________日 期:___________2021年大学生测控技术与仪器实习总结今年的暑假我不打算回家了,我想我应该参加社会实践了,...

    3年前   
    380    0

    文档贡献者

    文***品

    贡献于2023-01-16

    下载需要 8 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档