




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 电子技术课程设计报告 必选题(一):7段led译码显示电路设计一、程序代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity decled is port(clk:in std_logic; dout:out std_logic_vector(6 downto 0);end decled;architecture behav of decled is signal cnt4b:std_logic_vector(3 downto 0);begin process(clk) begin
2、if clkevent and clk=1 then cnt4b dout dout dout dout dout dout dout dout dout dout dout dout dout dout dout dout dout =0000000; end case; end process;end behav; 二、时序仿真结果: 必选题(二):数字频率计设计一、程序代码:1、 十进制计数器cnt10library ieee;use ieee.std_logic_1164.all;entity cnt10 isport(clk:in std_logic; clr:in std_logi
3、c; ena:in std_logic; cq:out integer range 0 to 15; carry_out:out std_logic);end cnt10;architecture behav of cnt10 is signal cqi:integer range 0 to 15;begin process(clk,clr,ena)begin if clr=1 then cqi=0; elsif clkevent and clk=1 then if ena=1 then if cqi9 then cqi=cqi+1; else cqi=0; end if; end if; e
4、nd if;end process;process(cqi)begin if cqi=9 then carry_out=1; else carry_out=0; end if;end process;cq=cqi;end behav;2、锁存器reg32blibrary ieee;use ieee.std_logic_1164.all;entity reg32b is port(load:in std_logic; din:in std_logic_vector(31 downto 0); dout:out std_logic_vector(31 downto 0);end reg32b;ar
5、chitecture behav of reg32b isbegin process(load,din) begin if loadevent and load=1 then dout=din; end if; end process;end behav;3、侧频控制信号发生器testctllibrary ieee;use ieee.std_logic_1164.all;entity testctl is port(clk:in std_logic; tsten:out std_logic; clr_cnt:out std_logic; load:out std_logic);end test
6、ctl;architecture behav of testctl is signal div2clk:std_logic;begin process(clk) begin if clkevent and clk=1 then div2clk=not div2clk; end if; end process; process(clk,div2clk) begin if clk=0 and div2clk=0 then clr_cnt=1; else clr_cnt=0; end if; end process; load=not div2clk; tstenclk,tsten=tsten1,
7、clr_cnt=clr_cnt1,load=load1);u2:reg32b port map(load=load1,din=dto1,dout=dout);u3:cnt10 port map(clk=fsin,clr=clr_cnt1,ena=tsten1, cq=dto1(3 downto 0),carry_out=carry_out1(0);u4:cnt10 port map(clk=carry_out1(0),clr=clr_cnt1,ena=tsten1, cq=dto1(7 downto 4),carry_out=carry_out1(1);u5:cnt10 port map(cl
8、k=carry_out1(1),clr=clr_cnt1,ena=tsten1, cq=dto1(11 downto 8),carry_out=carry_out1(2);u6:cnt10 port map(clk=carry_out1(2),clr=clr_cnt1,ena=tsten1, cq=dto1(15 downto 12),carry_out=carry_out1(3);u7:cnt10 port map(clk=carry_out1(3),clr=clr_cnt1,ena=tsten1, cq=dto1(19 downto 16),carry_out=carry_out1(4);
9、u8:cnt10 port map(clk=carry_out1(4),clr=clr_cnt1,ena=tsten1, cq=dto1(23 downto 20),carry_out=carry_out1(5);u9:cnt10 port map(clk=carry_out1(5),clr=clr_cnt1,ena=tsten1, cq=dto1(27 downto 24),carry_out=carry_out1(6);u10:cnt10 port map(clk=carry_out1(6),clr=clr_cnt1,ena=tsten1, cq=dto1(31 downto 28);en
10、d struc; 二、时序仿真结果:cnt10reg32btestctlfregtest必选题(一):一、 设计任务与要求题目:vhdl语言设计出租车计费程序(1)、能够实现计费功能费用的计算是按行驶里程收费,设出租车的起步价是8.00元,当里程小于2km里时,按起步价收费;当里程大于2km时每公里按1.3元计费。等待累计时间超过2min,按每分钟1.5元计费。所以总费用按下式计算:总费用=起步价+(里程-2km)*里程单价+(等候时间-2min)*等候单价(2)、能够实现显示功能l 显示汽车行驶里程:用两位数字显示分钟,显示方式为“xx”,单价为km。计程范围为099km,计程分辨率为1km
11、。l 显示等候时间:用两位数字显示分钟,显示方式为“xx”。计时范围为059min,计时分辨率为1min。l 显示总费用:用四位数字显示,显示方式为“xxx.x”,单位为元。计价范围为999.9元,计价分辨率为0.1元。二、设计原理根据设计要求, 系统的输入信号clk,计价开始信号start,等待信号stop,里程信号fin。系统得输出信号有:总费用数cha0 cha3,行驶距离km0 km1,等待时间min0 min1 等。系统的元件框图如下:系统有两个脉冲输入信号clk_195、fin,两个控制输入开关start、stop;控制过程为:start作为计费开始开关,当start为高电平时,系
12、统开始根据输入的情况计费。当有乘客上车并开始行驶时,fin脉冲到来,进行行驶计费,此时的stop需要置为0;如需停车等待,就把stop变为高电平,并去除fin输入脉冲,进行等待计费;当乘客下车且不等待时,直接将start置为0,系统停止工作;系统由分频模块、控制模块、计量模块和计费模块四部分组成。计量模块是整个系统实现里程计数和时间计数的重要部分;控制模块是实现不同计费方式的选择部分;设计通过分频模块产生不同频率的脉冲信号来实现系统的计费。计量模块采用1hz的驱动信号,计费模块采用13hz、15hz的驱动信号;计量模块每计数一次,计费模块就实现13次或者15次计数,即为实现计时时的1.5 元/
13、min、计程时的1.3元/km的收费;系统总体顶层框图为:计费器选频器分频器计算里程等待时间状态输入时钟输入时钟1时钟2时钟3 使能信号输出时间里程数输出费用三、设计步骤 (一)、分频模块 分频模块是对系统时钟频率进行分频,分别得到15hz、13hz、1hz三种频率;本设计中通过三种不同频率的脉冲信号实现在计程车在行驶、等待两种情况下的不同计费。原理框图如下:源程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity fenp
14、in2 isport ( clk_195 :in std_logic; ;频率为195hz的时钟 clk_13: out std_logic; ;频率为13hz的时钟 clk_15: out std_logic; ;频率为15hz的时钟 clk_1: out std_logic); ;频率为1hz的时钟end fenpin2;architecture rt1 of fenpin2 is signal q_13:integer range 0 to 12; ;分频器 signal q_15:integer range 0 to 14; ;分频器signal q_1:integer range 0
15、 to 194; ;分频器 begin process(clk_195) beginif (clk_195event and clk_195=1 )then if q_13=14 then q_13=0;clk_13=1; 此处产生13hz频率的信号 elsif q_13=8 then clk_13=0;q_13=q_13+1; else q_13=q_13+1; end if; if q_15=12 then q_15=0;clk_15=1; ;此处产生15hz频率的信号 elsif q_15=7 then clk_15=0;q_15=q_15+1; else q_15=q_15+1; en
16、d if; if q_1=194 then q_1=0;clk_1=0; ;此处产生1hz频率的信号 elsif q_1=94 then clk_1=1;q_1=q_1+1; else q_1=q_1+1; end if;三种频率比为15:13:1end if;end process;end rt1;分频模块的仿真波形图为:注: 有图中的周期时间可以看出 ,三种输出的信号脉冲对应的频率比实现了1:13:15;(二)、计量模块 本模块实现对于出租车在行驶和等待过程中的继承和计时功能;当行驶里程大于3km时,本模块中en0信号变为1;当等待时间大于2min时,本模块中en1信号变为1;clk1每来
17、一个上升沿,计量模块实现一次计数,里程数或者等待时间加1;元件框图为:源程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity jiliang isport( s: in std_logic; ;计量开始信号 fin: in std_logic; ;里程脉冲信号 stop: in std_logic; ;等待信号 clk1: in std_logic; ;计量驱动信号 en1,en0:buffer std_logic; ;计
18、量输出的控制信号 k1,k0: buffer std_logic_vector(3 downto 0); ;里程计数 m1,m0: buffer std_logic_vector(3 downto 0); ;时间计数end jiliang;architecture rt2 of jiliang is beginprocess(clk1)begin if clk1event and clk1=1 then ;本语句实现clk1对计量模块的驱动 if s=0 then en1=0;en0=0;m1=0000;m0=0000;k1=0000;k0=0000; elsif stop=1 then ;等
19、待计时开始标志 if m0=1001 then m0=0000; if m1=0101 then m1=0000; else m1=m1+1; end if; else m000000001then en1=1; ;如等待uop时间大于2min 输出信号使能en1置高电平。 else en1=0; 否则就置低电平 end if; elsif fin=1 then ; 行驶计程开始 en1=0; ;en1失效,开始检验en0 if k0=1001 then k0=0000; if k1=1001 then k1=0000; else k1=k1+1; end if; else k00000000
20、1 then en0=1; ;如果里程数大于2km,则输出使能en0置高电平 else en0=0; ;否则制低电平 end if; else en1=0;en0=0; ;clk1不驱动,使能信号为0 end if; end if;end process;end rt2;计量模块的仿真波形图为:出租车停下,计费停止,里程、时间清零车启动后的使能计费信号,前2km时,费用不加等待使能信号,前2分钟不使能。注:由图可以看出,在fin脉冲到来时,k1、k0进行计数,当大于2km时en0就置高电平;当stop为高电平时,即为进入等待计时,m1、m0进行计数,en1在时间大于2min时输出高电平;当s信
21、号为零,乘客下车,计费结束数据清零。(三)、计费模块 本模块根据输入的clk2信号变化,调节费用的计数,c0、c1、c2、c3分别表示费用的显示。原理框图为:源程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity jifei isport(clk2:in std_logic; start: in std_logic; c0,c1,c2,c3: buffer std_logic_vector(3 downto 0);end
22、jifei;architecture rt3 of jifei isbeginprocess(clk2,start)begin if start=0 then c3=0000;c2=0000;c1=1000;c0=0000; ;对于起步 elsif clk2event and clk2=1 then 价进行了限定 if c0=1001 then c0=0000; if c1=1001 then c1=0000; if c2=1001 then c2=0000; if c3=1001 then c3=0000; else c3=c3+1; end if; else c2=c2+1; end if
23、; else c1=c1+1; end if; else c0=c0+1; ;完成计费功能 end if; end if;end process;end rt3;计费模块的仿真波形如下:价格从8元开始,逐渐加一计费注:由图中可以看出,随着clk2的高电平的到来,c3、c2、c1、c0逐级进行加法计数,当c0计数到九时,产生进位,c1加一;当c1计数到九时,产生进位,c2加一;当c2计数到九时,产生进位,c3加一; 起步价为8元;(四)、控制模块 本模块主要是通过两个不同的输入使能信号,对两个输入脉冲进行选择输出;使能信号是计量模块中的输出,两个输入脉冲是分频模块输出的13hz、15hz的脉冲;
24、本模块实现了双脉冲的二选一;原理框图为源程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity kongzhi isport(ent0,ent1:in std_logic; ;输入的使能选择信号 clk_in1:in std_logic; ;输入脉冲 clk_in2:in std_logic; ;输入脉冲 clk_out:out std_logic); ;输出脉冲end kongzhi;architecture rt4 of
25、 kongzhi isbeginprocess(ent0,ent1)begin if ent0=1 then ;以下语句实现对双脉冲的二选一 clk_out=clk_in1; elsif ent1=1 then clk_out=clk_in2; else clk_out=0; ;防止时钟脉冲未知状态 end if; end process;end rt4;控制模块的仿真波形图为:频率分界处两种不同的计费方式注:由图中可以看出,当ent0为高电平时,输出为这一时段的clk_in1; 当ent1为高电平时,输出为这一时段的clk_in2;(五)、原件例化(总模块) 本模块用原理图实现出租车的计费器
26、系统设计, 将各个模块组合在一起;start为计费开始信号,stop为等待信号,fin为车开动信号各模块联合仿真波形:里程计数,分钟计数;cha为四位价元格,精度0.1实例验证:cha显示价格位011.0元km数为0,时间4分钟注:由图中可以看出,当stop为高电平,即进入等待计时收费,分钟位记到4分钟时,(当等待时间超过2min时,每过一分钟加1.5元,即为实现每等一分钟收费1.5元。)所需费用为8+(4-2)*1.5=11.0元。总费用为036.6元。结果验证:出租车的起步价是8元,当等待了4分钟,计价器(cha【3-0】)显示为011.0元里程17km时间8分钟注:当fin脉冲信号到来时
27、,实现了行驶计费,当行驶里程超过2公里,则再按每公里1.3元计费;如图,等待了8分钟,行驶了17千米结果验证:出租车的起步价是8元,当等待了8分钟,行驶了17千米的时候,收费为8+(8-2)*1.5+(17-2)*1.3=36.5元;计价器显示为36.6元。自选题(二):一、设计任务与要求题目:数字秒表(1) 、设计一块数字秒表,能够精确反应计时时间,并完成复位计时功能。(2) 、秒表计时的最大范围为23时59分59.9秒,精度为0.1秒。秒表可显示计时时间的时、分、秒、0.1秒的度量值,且各度量单位可以正确进位。(3) 、当复位清零有效时,秒表清零并做好计时准备。在任何情况下,只要按下复位开
28、关,秒表都要无条件进行复位操作,即使在计时过程中也无条件地清零。(4) 、设置秒表启动/停止开关。按下该开关,秒表即刻开始计时,并得到计时结果;放开该开关时,计时停止。一、设计原理:根据设计要求,系统的输入时钟信号为clk,清零信号clr,系统的使能控制信号为a.当使能控制信号为1时,控制模块的输出信号q为1,则可驱动计时模块工作;当系统的清零信号clr为0时,系统进行复位(清零)操作;当系统的使能控制信号a为0时,控制模块输出信号为0,en也为0,则可以使系统处于暂停状态。系统可以分为控制模块和计时模块, 开始 周期脉冲 clr=0= 清 零是en=1否否是否为23时59分59.9秒是是清
29、零是否为9时59分59.9秒进位即h_cnt_h+1否是是否为59分59.9秒否进位即h_cnt_l+1 是 是否为9分59.9秒进位即m_cnt_h+1是是否为59.9秒进位即m_cnt_l+1是是否为9.9秒秒进位即s_cnt_h+1 是是否为0.9秒进位即s_cnt_l+1是 sub_s_cnt_h+1 结 束二、设计步骤(一)控制模块 控制模块是为了完成该数字秒表的暂停功能(二)计时模块计时模块是为了完成该数字秒表的计时、清零功能,有十进制,六进制,二进制源程序如下:1、计时模块library ieee;use ieee.std_logic_1164.all;use ieee.std_
30、logic_unsigned.all;entitytime isport(clr,clk,en:in std_logic;hou_h,hou_l,min_h,min_l,sec_h,sec_l,sub_sec_h:out std_logic_vector(3 downto 0);end time;architecture time_arc of time isbeginprocess(clk,clr)variable h_cnt_h,h_cnt_l,m_cnt_h,m_cnt_l,s_cnt_h,s_cnt_l,sub_s_cnt_h:std_logic_vector(3 downto 0);
31、beginif(clr=0)then h_cnt_h:=0000; h_cnt_l:=0000; m_cnt_h:=0000;m_cnt_l:=0000;s_cnt_h:=0000;s_cnt_l:=0000;sub_s_cnt_h:=0000; elsif (clk event and clk=1) thenif(en=1)then -23时59分59.9秒清零-if(h_cnt_h=0010and h_cnt_l=0011and m_cnt_h=0101and m_cnt_l=1001and s_cnt_h=0101and s_cnt_l=1001and sub_s_cnt_h=1001)
32、then h_cnt_h:=0000; h_cnt_l:=0000; m_cnt_h:=0000; m_cnt_l:=0000; s_cnt_h:=0000; s_cnt_l:=0000; sub_s_cnt_h:=0000;-9时59分59.9秒清零-时钟高位进1-elsif(h_cnt_l=1001and m_cnt_h=0101and m_cnt_l=1001and s_cnt_h=0101and s_cnt_l=1001and sub_s_cnt_h=1001)then h_cnt_l:=0000; m_cnt_h:=0000; m_cnt_l:=0000; s_cnt_h:=0000
33、; s_cnt_l:=0000; sub_s_cnt_h:=0000; h_cnt_h:=h_cnt_h+1;-59分59.9秒清零- elsif(m_cnt_h=0101and m_cnt_l=1001and s_cnt_h=0101and s_cnt_l=1001and sub_s_cnt_h=1001)then m_cnt_h:=0000; m_cnt_l:=0000; s_cnt_h:=0000; s_cnt_l:=0000; sub_s_cnt_h:=0000; h_cnt_l:=h_cnt_l+1; -9分59.9秒清零,分钟高位进1-elsif(m_cnt_l=1001and s
34、_cnt_h=0101and s_cnt_l=1001and sub_s_cnt_h=1001)thenm_cnt_l:=0000;s_cnt_h:=0000;s_cnt_l:=0000;sub_s_cnt_h:=0000;m_cnt_h:=m_cnt_h + 1;-59.9秒清零 分钟低位进1-elsif(s_cnt_h=0101and s_cnt_l=1001and sub_s_cnt_h=1001)then s_cnt_h:=0000; s_cnt_l:=0000; sub_s_cnt_h:=0000; m_cnt_l:=m_cnt_l +1;-9.9秒清零 秒钟高位进1- elsif(s_cnt_l=1001and sub_s_cnt_h=1001)then s_cnt_l:=0000; sub_s_cnt_h:=0000; s_cnt_h:=s_cnt_h + 1;-0.9秒清零 秒钟低位进1- elsif(sub_s_cnt_h=1001)then sub_s_cnt_h:=0000; s_cnt_l:=s_cnt_l + 1;-0.9秒清零 低位清零高位进1-else sub_s_cnt_h:=sub_s_cnt_h + 1;end if;end
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025上海二手车买卖合同样本
- 套细胞淋巴瘤的临床护理
- 2025年企业设备借款抵押合同专业版范本
- 2025年人教版小学数学一年级下册期末考试卷(带答案)
- 白头粉刺的临床护理
- 缩鼻翼的临床护理
- 新质生产力绿色转型
- 浙江国企招聘2025浙江省安全生产科学研究有限公司招聘19人笔试参考题库附带答案详解
- 2025【合同范本】简易劳务合作协议模板
- 《2025项目工程物资采购合同》
- 国家卫生部《综合医院分级管理标准》
- DB64++1996-2024+燃煤电厂大气污染物排放标准
- 初中八年级数学课件-最短路径-将军饮马问题
- 信息论与编码期末考试题(全套)
- 医院医学伦理审查委员会章程
- 废弃物管理制度范本
- 房地产销售价格优惠申请表-
- 绿化自动滴灌系统施工方案
- 处理突发事件流程图
- 2023年梅毒诊疗指南
- 医疗卫生系统招聘《医学基础知识》备考题库资料宝典(核心题版)
评论
0/150
提交评论