欢迎来到皮皮网网首页

【稀有股票指标源码】【google talk 源码】【irrlicht 源码编译】1011011的源码_10110111的原码

来源:iapp怎么发布源码 时间:2024-11-24 13:32:13

1.vhdl 实现时钟整点报时功能
2.北大14春学期《计算机应用基础》在线作业3
3.EDA课程设计,用VHDL编程做出租车计费器

1011011的源码_10110111的原码

vhdl 实现时钟整点报时功能

       1、完成秒/分/时的原码依次显示并正确计数;

       2、秒/分/时各段个位满正确进位,原码秒/分能做到满向前进位;

       3、原码定时闹钟:实现每到整点时报时,原码扬声器发出报时声音;

       4、原码稀有股票指标源码时间设置,原码也就是原码手动调时功能:当认为时钟不准确时,可以分别对分/时钟进行调整;秒还可以手动调0;

       分频模块:

       源代码:

       library ieee;

       use ieee.std_logic_.all;

       use ieee.std_logic_unsigned.all;

       entity yxfrequencydivider is

       port(clk:in std_logic;

        hz,原码hz,hz,hz4,hz1:out std_logic);

       end yxfrequencydivider ;

       architecture hz of yxfrequencydivider is

       signal count:std_logic_vector(9 downto 0);

       begin

       process(clk)

       begin

       if (clk'event and clk='1') then

       if (count="") then

       count<="";

       else

       count<= count+1;

       end if;

       end if;

       end process;

       hz <= count(0);

       hz <= count(1);

       hz <= count(3);

       hz4<=count(7);

       hz1<=count(9);

       end architecture;

       模块说明:由于clk的频率为hz,所以可以定义一个std_logic_vecture(9 downto 0),原码使它不停地从加到然后又返回,由于最低位在clk脉冲到来时从0变成1,原码然后又在下一个脉冲变回0,原码因此最低位的原码时钟周期为clk的时钟周期的两倍,它的原码频率就为clk频率的1/2即HZ。同理,原码次高位的频率就为clk频率的1/2*1/2=1/4,用这种方法就可以得到各种能整除的频率,从而实现分频功能。

       进制模块

       源程序

       library ieee;

       use ieee.std_logic_.all;

       use ieee.std_logic_unsigned.all;

       entity m is

       port(cp:in std_logic;

       sqmsl,sqmsh:out std_logic_vector(3 downto 0));

       end m;

       architecture arh_m of m is

       signal stempl,stemph:std_logic_vector(3 downto 0);

       begin

       process(cp)

       begin

       if cp='1' then

       if stempl="" and stemph="" then

       stempl<="";

       stemph<="";

       else

        if stempl=9 then

        stempl<="";

        stemph<=stemph+1;

        else

        stempl<=stempl+1;

        end if;

       end if;

       end if;

       end process;

       sqmsl<=stempl;

       sqmsh<=stemph;

       end architecture;

       本模块端口说明:cp为脉冲输入端;sqmsh和sqmsl分别为小时的高位和低位输出,用来在数码管中分别显示小时的高位和低位数值,定义为std_logic_vector(3 downto 0).

        功能实现:在cp高脉冲到时执行以下程序块,如果高位为2,低位为3则高位各低位都变回0,不然再低位进行判断,若为9低位变回0,高位加1,若不为9则低位直接加1即可同样实现.

       进制模块

       源程序

       library ieee;

       use ieee.std_logic_.all;

       use ieee.std_logic_unsigned.all;

       entity m is

       port(cp,clr:in std_logic;

        co:out std_logic;

        sqmsl,sqmsh:out std_logic_vector(3 downto 0));

       end m;

       architecture arh_m of m is

       signal stempl,stemph:std_logic_vector(3 downto 0);

       signal stempco:std_logic;

       begin

       process(cp,clr)

       begin

       if clr='0' then

       stemph<="";

       stempl<="";

       else

        if cp'event and cp='1' then

        stempco<='0';

        if stempl=9 then

        if stemph=5 then

        stempco<='1';

        stempl<="";

        stemph<="";

        else

        stempl<="";

        stemph<=stemph+1;

        end if;

        else

        stempl<=stempl+1;

        end if;

        end if;

       end if;

       end process;

       co<=stempco;

       sqmsl<=stempl;

       sqmsh<=stemph;

       end architecture;

       本模块端口说明:cp为脉冲信号输入端;clr为置0端,并且低电平有效,用来在校时时秒位清零;co为进位输入端;sqmsh和sqmsl分别是秒或分的高位或低位,定义为std_logic_vector(3 downto 0),用来分别在数码管中显示读数.

        功能说明:以cp和clr而敏感变量,先判断clr是否为0,若为0则stemph种stempl都为,google talk 源码然后分别赋值给sqmsh和sqmsl;如果不为0,则执行累加;否则,再判断高位是否为5,若为5则进位输出为1、低位和高位都赋予0,若不为5则高位加1,低位赋予0.从而实现了进制的累加.

       扫描显示及译码模块

       源程序

       library ieee;

       use ieee.std_logic_.all;

       use ieee.std_logic_unsigned.all;

       entity dongtaism is

       port(clk:in std_logic;

        s:in std_logic_vector(7 downto 0);

        f:in std_logic_vector(7 downto 0);

        m:in std_logic_vector(7 downto 0);

        selout:out std_logic_vector(5 downto 0);

        segout:out std_logic_vector(6 downto 0));

       end dongtaism;

       architecture a of dongtaism is

       signal temp:std_logic_vector(2 downto 0);

       signal seg:std_logic_vector(6 downto 0);

       signal sel:std_logic_vector(5 downto 0);

       begin

       process(clk)

       variable num:std_logic_vector(3 downto 0);

       begin

       if (clk'event and clk='1' ) then

        if temp>=5 then

        temp<="";

        else

        temp<=temp+1;

        end if;

        case temp is

        when "" =>num:=s(7 downto 4);

        sel<="";

        when "" =>num:=s(3 downto 0);

        sel<="";

        when "" =>num:=f(7 downto 4);

        sel<="";

        when "" =>num:=f(3 downto 0);

        sel<="";

        when "" =>num:=m(7 downto 4);

        sel<="";

        when "" =>num:=m(3 downto 0);

        sel<="";

        when others=>sel<="";

        end case;

        case num is

        when""=>seg<="";

        when""=>seg<="";

        when""=>seg<="";

        when""=>seg<="";

        when""=>seg<="";

        when""=>seg<="";

        when""=>seg<="";

        when""=>seg<="";

        when""=>seg<="";

        when""=>seg<="";

        when others=>seg<="";

        end case;

       end if;

       end process;

       selout<=sel;

       segout<=seg;

       end architecture;

       本模块端口说明:stempl、stemph、ftempl 、ftemph、mtempl、mtemph

       分别为时,分,秒的输入端,定义为std_logic_vector(7 downto 0);segout为七端显示管的输出,定义为std_logic_vector(6 downto 0);selout为扫描地址端,定义为std_logic_vector(5 downto 0),某一时刻只有一个为1,对应的数组号即为当前扫描的数码管的编号.

       功能实现:定义一个std_signal_vector(2 downto 0)变量addr,它在0和5之间不断的循环,用来指示当前扫描的哪一根管,循环用if addr>=5 then addr<=””; else addr<=addr+1;end if;实现.再定义一个类型为std_logic_vector(5 downto 0)的tempaddr信号,它用来产生一个长度为6的数,该数在同一时刻只有一位是高电平表示正在扫描该显示管,在进程结束时它的值将赋给selout输出.定义一个std_logic_vector(6 downto 0)类型的temp_display,用来存放将由4位BCD码编码而来的7段显示码.最后在进程中定义一个std_logic_vector(3 downto 0)类型的tempnum变量,用来存放时、分、秒的高位或低位,然后将该数编码成7段显示码,并赋给temp_display信号。具体算法如下:

       建立一个以cp脉冲为敏感变量的进程,先判断是否是cp的高电平脉冲,若不是则什么也不执行,若是高电平脉冲,则执行以下程序。Adder加1,用case语句根据adder的值,给tempnum赋予当前要扫描的数码管的值,用case语句根据tempnum的irrlicht 源码编译值编译成对应的7段显示管的值并赋给temp_display,当进程结束时把temp_display的值赋给segout,把tempaddr的值赋给selout,然后由这两个端口输出。

       整点报时模块:

       源程序

       library ieee;

       use ieee.std_logic_.all;

       use ieee.std_logic_unsigned.all;

       entity baoshi is

       port(m1,m0,s1,s0:in std_logic_vector(3 downto 0);

       sig,sig1k:out std_logic);

       end baoshi;

       architecture behave of baoshi is

       begin

       process(m0)

       begin

       sig<='0';

       sig1k<='0';

       if m1="" and m0="" then

        if s1=""and (s0="" or s0="" or s0="" or s0="" or s0="") then

        sig<='1';

        else

        sig<='0';

       end if;

       end if;

       if m1="" and m0=""and s1="" and s0="" then

        sig1k<='1';

        else

        sig1k<='0';

       end if;

       end process;

       end behave;

       本模块端口说明:m1,m0,s1,s0分别为分和秒的高低位的输入;sig,sig1k分别为hz和1khz鸣叫的控制信号。

       功能实现:定义temp,temp1k信号,用于存放两种频率报时的控制信号;定义一个以m0为敏感信号的一个比较进程,在进程一开始的时候先给temp和temp1k赋予初值0,然后判断分是否为分,若是则判断秒的高位是否是5,若是则如果秒的低位为0、2、6、8则temp为1;若分不是则判断分和秒是否都为0,若都为0则temp1k为1。进程结束时把temp,temp1k的值分别赋给sig,sig1k。

       然后连接顶层图

北大春学期《计算机应用基础》在线作业3

       《计算机应用基础(本科)》春在线作业3

       试卷总分: 测试时间:-- 试卷得分:

       一、单选题(共道试题,共分。写作软件源码)得分:

       1.在Excel中,图表是()。

       A. 用户通过“绘图”工具栏的工具绘制的特殊图形

       B. 由数据清单生成的用于形象表现数据的图形

       C. 由数据透视表派生的特殊表格

       D. 一种将表格与图形混排的对象

       答案:B

       满分:2分得分:2

       2.在Word的编辑状态,打开文档“ABC”,修改后另存为“ABD”,则文档ABC()。

       A. 被文档ABD覆盖

       B. 被修改未关闭

       C. 被修改并关闭

       D. 未修改被关闭

       答案:D

       满分:2分得分:2

       3.7位二进制编码的ASCII码可表示的字符个数为()。

       A.

       B.

       C.

       D.

       答案:D

       满分:2分得分:2

       4.在Windows,打开一个菜单后,其中某菜单项会出现下属级联菜单的标识是()。

       A. 菜单右侧有一组英文提示

       B. 菜单右侧有一个黑色三角形

       C. 菜单左侧有一个黑色圆点

       D. 菜单左侧有一个"√"符号

       答案:B

       满分:2分得分:2

       5.下面不正确的说法是()。

       A. 阳光直射计算机会影响计算机的正常操作

       B. 带电安装的内存条可能导致计算机的某些部件的损坏

       C. 灰尘可能导致计算机线路短路

       D. 可以利用电子邮件进行病毒传播

       答案:A

       满分:2分得分:2

       6.下列不属于计算机信息安全的是()。

       A. 安全法规

       B. 信息载体的安全保卫

       C. 安全技术

       D. 安全管理

       答案:B

       满分:2分得分:2

       7.在Word编辑状态中,对已经输入的文档设置首字下沉,需要使用的菜单是()。

       A. 编辑

       B. 视图

       C. 格式

       D. 工具

       答案:C

       满分:2分得分:2

       8.“位微型计算机”中的指的是()。

       A. 微机型号

       B. 内存容量

       C. 运算速度

       D. 机器字长

       答案:D

       满分:2分得分:2

       9.多媒体一般不包括()媒体类型。

       A. 图形

       B. 图像

       C. 音频

       D. 视频

       答案:A

       满分:2分得分:2

       .进入幻灯片母版的方法是()。

       A. 选择“编辑”菜单中的“母版”命令项下的“幻灯片母版”命令

       B. 选择“格式”菜单中的“母版”命令项下的“幻灯片母版”命令

       C. 按住Shift键的同时,再单击“普通视图”按钮

       D. 按住Shift键的同时,再单击“幻灯片浏览视图”按钮

       答案:C

       满分:2分得分:2

       .在Word的qt源码书籍编辑状态中,如果要输入希腊字母Ω,则需要使用()菜单。

       A. 编辑

       B. 插入

       C. 格式

       D. 工具

       答案:B

       满分:2分得分:2

       .域名服务DNS的主要功能为()。

       A. 通过请求及回答获取主机和网络相关信息

       B. 查询主机的MAC地址

       C. 为主机自动命名

       D. 合理分配IP地址

       答案:A

       满分:2分得分:2

       .在计算机中表示存储容量时,下列描述中正确是是()。

       A. 1KB=MB

       B. 1KB=B

       C. 1MB=KB

       D. 1MB=GB

       答案:C

       满分:2分得分:2

       .计算机的主存储器是指()。

       A. RAM和磁盘

       B. ROM

       C. RAM和ROM

       D. 硬盘和控制器

       答案:C

       满分:2分得分:2

       .计算机配置的内存容量为MB或MB以上,其中的MB是指()。

       A. ×××8个字节

       B. ××个字节

       C. ×××8个字节

       D. ××个字节

       答案:D

       满分:2分得分:2

       .如果你对网页上的一段图文信息感兴趣,想保存到本地硬盘,最好进行()操作。

       A. 全选这段信息,然后按右键选择“目标另存为”菜单命令,保存到本地硬盘

       B. 文字、分开来复制

       C. 选择“文件”菜单中的“另存为”菜单命令,保存为Web页格式

       D. 保存这个文件的源代码即可

       答案:B

       满分:2分得分:2

       .当电子邮件在发送过程中有误时,则()。

       A. 电子邮件服务器将自动把有误的邮件删除

       B. 邮件将丢失

       C. 电子邮件服务器会将原邮件退回,并给出不能寄达的原因

       D. 电子邮件服务器会将原邮件退回,并不给出不能寄达的原因

       答案:C

       满分:2分得分:2

       .在Word编辑状态,打开了一个文档,进行”保存“操作后,该文档()。

       A. 被保存在原文件夹下

       B. 可以保存在已有的其他文件夹下

       C. 可以保存在新建文件夹下

       D. 保存后文档被关闭

       答案:A

       满分:2分得分:2

       .在幻灯片中插入的页脚()。

       A. 每一页幻灯片上都必须显示

       B. 能进行格式化

       C. 作为每页的注释

       D. 其中的内容不能是日期

       答案:C

       满分:2分得分:2

       .在Excel中,用户在工作表中输入日期,()形式不符合日期格式。

       A. --'

       B. -OCT-

       C. //

       D. --

       答案:A

       满分:2分得分:2

       .下列四组数依次为二进制、八进制、十六进制,符合要求的是()。

       A. 、、

       B. 、、

       C. 、、

       D. 、、

       答案:D

       满分:2分得分:2

       .在Windows中,要设置屏幕保护程序,可以使用控制面板的()图标命令。

       A. 添加/删除程序

       B. 系统

       C. 密码

       D. 显示

       答案:D

       满分:2分得分:2

       .Excel通过()功能实现图表的创建。

       A. 数据库应用

       B. 图表向导

       C. 函数

       D. s数据地图

       答案:B

       满分:2分得分:2

       .计算机的工作原理是()。

       A. 机电原理

       B. 程序存储

       C. 程序控制

       D. 存储程序与程序控制

       答案:B

       满分:2分得分:2

       .在Excel默认的柱形图中,用于表现表格中一个数据行的名词是()。

       A. 分类

       B. 标记

       C. 函数

       D. 数据源

       答案:A

       满分:2分得分:2

       .匿名FTP是()。

       A. Internet中一种匿名信的名称

       B. 在Internet上没有主机地址的FTP

       C. 允许用户免费登录并下载文件的FTP

       D. 用户之间能够进行传送文件的FTP

       答案:C

       满分:2分得分:2

       .在OutLook Express窗口中,新邮件的“抄送”文本框输入的多个电子信箱的地址之间,应用()分隔。

       A. 分号(;)

       B. 逗号(,)

       C. 冒号(:)

       D. 空格

       答案:A

       满分:2分得分:2

       .下面关于图表与数据源关系的叙述中,正确的是()。

       A. 图表中的标记对象会随数据源中的数据变化而变化

       B. 数据源中的数据会随着数据源中的数据变化而变化

       C. 删除数据源中某单元格的数据时,图表中某数据点也会随之被自动删除

       D. 以上都是正确的说法

       答案:D

       满分:2分得分:2

       .计算机中表示内存储器容量大小的基本单位是()。

       A. 位(bit)

       B. 字节(byte)

       C. 字(word)

       D. 双字(double word)

       答案:B

       满分:2分得分:2

       .Excel中,让某单元格里数值保留二位小数,下列()不可实现。

       A. 选择 “数据”菜单下的“有效数据”

       B. 选择单元格单击右键,选择“设置单元格格式”

       C. 选择工具条上的按钮“增加小数位数”或“减少小数位数”

       D. 选择菜单“格式”,再选择“单元格...”

       答案:A

       满分:2分得分:2

       .在Word的编辑状态,对当前文档中的文字进行“字数统计”操作,应当使用的菜单是()。

       A. “编辑”菜单

       B. “文件”菜单

       C. “视图”菜单

       D. “工具”菜单

       答案:D

       满分:2分得分:2

       .在Windows下,将某应用程序中所选的文本或图形复制到一个文件,在"编辑"菜单中可选择的命令是()。

       A. 剪切

       B. 粘贴

       C. 复制

       D. 选择性粘贴

       答案:C

       满分:2分得分:2

       .十进制数向二进制数进行转换时,十进制数相当于二进制数()。

       A.

       B.

       C.

       D.

       答案:D

       满分:2分得分:2

       .在CuteFTP中,一个文件中断后断点续传的次数是()。

       A. 1次

       B. 2次

       C. 3次

       D. 不限制

       答案:D

       满分:2分得分:2

       .在PowerPoint的大纲窗格中输入文本,则()。

       A. 该文本只能在幻灯片视图中修改

       B. 既可以在幻灯片视图中修改文本,也可以在大纲视图中修改文本

       C. 在大纲视图中用文本框移动文本

       D. 不能在大纲视图中删除文本

       答案:B

       满分:2分得分:2

       二、多选题(共5道试题,共分。)得分:

       1.PowerPoint中,有关幻灯片母版中的页眉页脚下列说法正确的是()。

       A. 页眉或页脚是加在演示文稿中的注释性内容

       B. 典型的页眉/页脚内容是日期、时间以及幻灯片编号

       C. 在打印演示文稿的幻灯片时,页眉/页脚的内容也可打印出来

       D. 不能设置页眉和页脚的文本格式

       答案:ABC

       满分:2分得分:2

       2.信息安全涉及()领域。

       A. 计算机技术

       B. 网络技术

       C. 法律制度

       D. 公共道德

       答案:ABCD

       满分:2分得分:2

       3.下列有关快捷方式的叙述,正确的是()。

       A. 快捷方式改变了程序或者文档在键盘上的存放位置

       B. 快捷方式提供了对常用程序或者文档的访问捷径

       C. 删除快捷方式不会对源程序或文档产生影响

       答案:BC

       满分:2分得分:2

       4.下列说法正确的是()。

       A. 电子邮件是Internet提供的一项最基本的服务

       B. 电子邮件具有快速、高效、方便、廉价等特点、通过电子邮件,可以向世界上任何一个角落的网上用户发送信息

       C. 可发送的多媒体只有文字和图像

       答案:ABC

       满分:2分得分:2

       5.下列设备中属于输入设备的是()。

       A. 光笔

       B. 打印机

       C. 键盘

       D. 鼠标

       答案:ACD

       满分:2分得分:2

       三、判断题(共道试题,共分。)得分:

       1.在PowerPoint中,可以对幻灯片进行移动、删除、复制、设置动画效果,但不能对单独的幻灯片的内容进行编辑的视图是大纲视图。

       A. 错误

       B. 正确

       答案:A

       满分:2分得分:2

       2.D5单元格中有公式“=A5+$B$4”,删除第3行后,D 4中的公式是A4+$B$4 。

       A. 错误

       B. 正确

       答案:B

       满分:2分得分:2

       3.计算机指令由操作码和地址码组成。

       A. 错误

       B. 正确

       答案:B

       满分:2分得分:2

       4.中央处理器(CPU)主要运算器和控制器 组成。

       A. 错误

       B. 正确

       答案:B

       满分:2分得分:2

       5.在Excel单元格中输入 6/,使该单元格显示0.3。

       A. 错误

       B. 正确

       答案:A

       满分:2分得分:2

       6.PowerPoint演示稿的扩展名是 PPT。

       A. 错误

       B. 正确

       答案:B

       满分:2分得分:2

       7.在WORD中,用鼠标在文档选定全选区中连续快速击打两次,其作用是与快捷键Ctrl+A的作用等价。

       A. 错误

       B. 正确

       答案:A

       满分:2分得分:2

       8.计算机能够直接执行的计算机语言是机器语言。

       A. 错误

       B. 正确

       答案:B

       满分:2分得分:2

       9.Word中快捷方式CTRL+V表示剪切内容。

       A. 错误

       B. 正确

       答案:A

       满分:2分得分:2

       .Excel工作表最多有列。

       A. 错误

       B. 正确

       答案:A

       满分:2分得分:2

EDA课程设计,用VHDL编程做出租车计费器

       è¯¾ç¨‹è®¾è®¡å†…容与要求

       1,用开关按键表示脉冲,每个脉冲代表米,个脉冲1公里,每公里1.4元,能同步显示里程和费用;

       2,低于2公里5元计费,高于2公里总费用=起步费用+(里程-2公里)*里程单价+

       ç­‰å€™æ—¶é—´*等后单价;

       3,等候时间大于2分钟,按每分钟1.3元计费;

       4,可以设定起步价和里程单价。

        一、设计原理与技术方法:

       åŒ…括:电路工作原理分析与原理图、元器件选择与参数计算、电路调试方法与结果说明;

       è½¯ä»¶è®¾è®¡è¯´æ˜Žä¹¦ä¸Žæµç¨‹å›¾ã€è½¯ä»¶æºç¨‹åºä»£ç ã€è½¯ä»¶è°ƒè¯•æ–¹æ³•ä¸Žè¿è¡Œç»“果说明。

        根据设计要求,系统的输入信号clk,计价开始信号start,等待信号stop,里程脉冲信号fin。系统的输出信号有:总费用数C0—c3,行驶距离k0—k1,等待时间m0—m1等。系统有两个脉冲输入信号clk_k,fin,其中clk_k将根据设计要求分频成hz,hz和1hz分别作为公里计费和超时计费的脉冲。两个控制输入开关start,stop;控制过程为:start作为计费开始的开关,当start为高电平时,系统开始根据输入的情况计费。当有乘客上车并开始行驶时,fin脉冲到来,进行行驶计费,此时的stop需要置为0;如需停车等待,就把stop变为高电平,

       å¹¶åŽ»é™¤fin输入脉冲,进行等待计费;当乘客下车且不等待时,直接将start置为0,系统停止工作;价格开始归为起步价5.0元。

        整个设计由分频模块,计量模块,计费模块,控制模块和显示模块五个部分组成。

       å…¶ä¸­è®¡é‡æ¨¡å—是整个系统实现里程计数和时间计数的重要部分;控制模块是实现不同计费方式的选择部分,根据所设计的使能端选择是根据里程计费还是根据等待时间计费,同时设计通过分频模块产生不同频率的脉冲信号来实现系统的计费。计量模块采用1hz的驱动信号,计费模块采用hz,hz的驱动信号;计量模块每计数一次,计量模块就实现次或者次计数,即为实现计时的1.3元/min,计程时的1.4元/km的收费。组成框图如下所示:

       1.百进制模块:

       å®žçŽ°ç™¾ç±³è„‰å†²çš„驱动信号,元件框图如图3所示:

       å›¾3 百进制模块框图

       æºç¨‹åºå¦‚下:

       library ieee;

       use ieee.std_logic_.all;

       use ieee.std_logic_unsigned.all;

       entity baijinzhi is

       port(start,clk2: in std_logic; --秒脉冲

        a: out std_logic_vector(3 downto 0));

       end baijinzhi;

       architecture rt1 of baijinzhi is

       signal count_1:std_logic_vector(3 downto 0);

       begin

        a<=count_1;

       process(start,clk2)

        begin

        if(start='0')then

        count_1<="";

        elsif(clk2'event and clk2='1')then

        if(count_1="")then

        count_1<="";

        else

        count_1<=count_1+'1';

        end if;

        end if;

       end process;

       end rt1

       2.计费模块

       ; 实现里程和等候时间的计费并输出到显示,元件框图4如下:

       å›¾4 计费模块框图

       æºç¨‹åºå¦‚下:

       Library IEEE;

       use IEEE.std_logic_.all;

       use IEEE.std_logic_arith.all;

       use IEEE.std_logic_unsigned.all;

       entity jifei is

       port(clk2:in std_logic; --计费驱动信号

        start:in std_logic; --计费开始信号

        c0,c1,c2,c3:buffer std_logic_vector(3 downto 0));

       end jifei;

       architecture rt1 of jifei is

       begin

       process(clk2,start)

       begin

        if start='0'then c3<="";c2<="";c1<="";c0<=""; --起步价5元

        elsif clk2'event and clk2='1'then

        if c0="" then c0<="";

        if c1="" then c1<="";

        if c2="" then c2<="";

        if c3="" then c3<="";

        else c3<=c3+1;

        end if;

        else c2<=c2+1;

        end if;

        else c1<=c1+1;

        end if;

        else c0<=c0+1;

        end if;

       end if;

       end process;

       end rt1;

       3.公里模块

       å®žçŽ°åŽ†ç¨‹çš„计数和输出计费脉冲,元件框图5如下:

       å›¾5 公里模块框图

       æºç¨‹åºå¦‚下:

       library ieee;

       use ieee.std_logic_.all;

       use ieee.std_logic_unsigned.all;

       entity gongli is

       port(clk1,start: in std_logic; --百米脉冲

        k1,k2,k3,k4: out std_logic_vector(3 downto 0); --里程显示

        temp2 : out std_logic);

       end gongli;

       architecture rt1 of gongli is

       signal count_1: std_logic_vector(3 downto 0);

       signal count_2: std_logic_vector(3 downto 0);

       signal count_3: std_logic_vector(3 downto 0);

       signal count_4: std_logic_vector(3 downto 0);

       begin

        k1<=count_1;

        k2<=count_2;

        k3<=count_3;

        k4<=count_4;

        process(start,clk1)

        begin

        if(start='0')then

        count_1<="";

        count_2<="";

        count_3<="";

        count_4<=""; ---公里清零

        elsif(clk1'event and clk1='1')then

        if(count_1="")then --公里计数器

        count_1<="";count_2<=count_2+1;temp2<='1';

        if(count_2="")then

        count_2<="";count_3<=count_3+'1';

        if(count_3="")then

        count_3<="";count_4<=count_4+'1';

        end if;

       end if;

        else

        count_1<=count_1+'1';temp2<='0';

        end if;

        end if;

        end process;

        end rt1;

       4.输出模块

       å®žçŽ°æ‰€æœ‰æ•°æ®çš„输出,元件框图6如下:

       å›¾6 输出模块框图

       æºç¨‹åºå¦‚下:

       library ieee;

       use ieee.std_logic_.all;

       use ieee.std_logic_unsigned.all;

       entity shuchu is

       port(y: in std_logic_vector(3 downto 0);

        e: out std_logic_vector(6 downto 0));

       end shuchu;

       architecture rt1of shuchu is

       begin

       process

       begin

        case y is

        when""=>e<="";

        when""=>e<="";

        when""=>e<="";

        when""=>e<="";

        when""=>e<="";

        when""=>e<="";

        when""=>e<="";

        when""=>e<="";

        when""=>e<="";

        when""=>e<="";

        when others=>e<="";

        end case;

       end process;

       end rt1;

       5.显示模块

       å®žçŽ°æ‰€æœ‰æ•°æ®çš„显示,元件框图7如下:

       å›¾7 显示模块框图

       æºç¨‹åºå¦‚下:

       library ieee;

       use ieee.std_logic_.all;

       use ieee.std_logic_unsigned.all;

       entity xianshi is

       port(start: in std_logic;

       a:in std_logic_vector(3 downto 0); --选择信号

        c1,c2,c3,c4,out1,out2,out3,out4:in std_logic_vector(3 downto 0); --里程显示,时间显示输入

        y:out std_logic_vector(3 downto 0)); --里程显示,时间显示输出

       end xianshi;

       architecture rt1 of xianshi is

       begin

       process

       begin

        if(start='0')then

        y<="";

        else case a is

        when ""=> y<=c1 ;

        when ""=> y<=c2 ;

        when ""=> y<=c3 ;

        when ""=> y<=c4 ;

        when ""=> y<=out1 ;

        when ""=> y<=out2;

        when ""=> y<=out3 ;

        when ""=> y<=out4;

        when others =>y<= "";

        end case;

        end if;

       end process;

       end rt1;

       6.dian模块

       å›¾8 dian模块框图

       æºç¨‹åºå¦‚下:

       library ieee;

       use ieee.std_logic_.all;

       use ieee.std_logic_unsigned.all;

       entity dian is

       port(a: in std_logic_vector(3 downto 0);

        e: out std_logic);

       end dian;

       architecture rt1 of dian is

       begin

       process

       begin

        case a is

        when ""=>e<='1';

        when ""=>e<='1';

        when others=>e<='0';

        end case;

       end process;

       end rt1;

       ä¸‰ã€ä¸­å„个模块设计分析

       ç³»ç»Ÿæ€»ä½“顶层框图如下:

       ç³»ç»Ÿæ€»ä½“顶层框图

       ç¨‹åºæœ€ç»ˆåŠŸèƒ½å®žçŽ°æ³¢å½¢ä»¿çœŸ

       1. 分频模块

       ç”±äºŽå®žéªŒç®±ä¸Šæ²¡æœ‰hz和hz的整数倍时钟信号,因此采用频率较大的khz进行分频,以近似得到hz,hz和1hz的时钟频率。通过以上三种不同频率的脉冲信号实行出租车行驶,等待两种情况下的不同计费。模块元件如下:

        分频模块框图

       æºç¨‹åºå¦‚下:

       Library IEEE;

       use IEEE.std_logic_.all;

       use IEEE.std_logic_arith.all;

       use IEEE.std_logic_unsigned.all;

        entity fenpin is

       port(clk_k:in std_logic; --系统时钟

        clk_:buffer std_logic; --分频

        clk_:buffer std_logic; --分频

        clk_1 : buffer std_logic); --1分频

       end fenpin ;

       architecture rt1 of fenpin is

       signal q_:integer range 0 to ; --定义中间信号量

       signal q_:integer range 0 to ;

       signal q_1:integer range 0 to ;

        begin

        process(clk_k)

        begin

       If(clk_k' event and clk_k='1')then

       If q_= then q_<=0;clk_<=not clk_;

        else q_<=q_+1;

        end if; --得hz频率信号

       If q_= then q_<=0;clk_<=not clk_;

        else q_<=q_+1;

        end if; --得hz频率信号

       If q_1= then q_1<=0;clk_1<=not clk_1;

        else q_1<=q_1+1;

        end if; --得1hz频率信号

       end if;

       end process;

        end rt1;

       2. 计量模块

       è®¡é‡æ¨¡å—主要完成计时和计程功能。

       è®¡æ—¶éƒ¨åˆ†ï¼šè®¡ç®—乘客的等待累积时间,当等待时间大于2min时,本模块中en1使能信号变为1;当clk1每来一个上升沿,计时器就自增1,计时器的量程为min,满量程后自动归零。

       è®¡ç¨‹éƒ¨åˆ†ï¼šè®¡ç®—乘客所行驶的公里数,当行驶里程大于2km时,本模块中en0使能信号变为1;当clk每来一个上升沿,计程器就自增1,计程器的量程为km,满量程后自动归零。

       å…ƒä»¶æ¡†å›¾ä¸ºï¼š

       è®¡é‡æ¨¡å—框图

       è®¡é‡æ¨¡å—仿真波形为:

       æºç¨‹åºå¦‚下:

       library ieee;

       use ieee.std_logic_.all;

       use ieee.std_logic_arith.all;

       use ieee.std_logic_unsigned.all;

       entity jiliang is

       port(start:in std_logic; --计费开始信号

        fin:in std_logic; --里程脉冲信号

        stop:in std_logic; --行驶中途等待信号

        clk1:in std_logic; --驱动脉冲

        en1,en0:buffer std_logic; --计费单价使能信号

        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

       signal w:integer range 0 to ; --计时范围0~

       begin

       process(clk1)

       begin

       if(clk1'event and clk1='1')then

        if start='0' then

        w<=0;en1<='0';en0<='0';m1<="";

        m0<="";k1<="";k0<="";

       elsif stop='1' then --计时开始信号

        if w= then

        w<=0;

        else w<=w+1;

       end if;

       if m0="" then

        m0<="";

       if m1="" then

        m1<="";

       else m1<=m1+1;

       end if;

       else m0<=m0+1;

       end if;

       if stop='1' then en0<='0';

       if m1&m0>"" then en1<='1'; --若等待时间大于2min则en1ç½®1

       else en1<='0';

       end if;

       end if;

       elsif fin='1' then --里程计数开始

       if k0="" then k0<="";

       if k1="" then k1<=""; --计程范围0~

       else k1<=k1+1;

       end if;

       else k0<=k0+1;

       end if;

       if stop='0' then

       en1<='0';

       if k1&k0>"" then

       en0<='1'; --若行使里程大于2km,则en0ç½®1

       else en0<='0';

       end if;

       end if;

       end if;

       end if;

       end process;

       end rt2;

       3. 控制模块

        本模块主要是通过计量模块产生的两个不同的输入使能信号en0,en1,对每个分频模块输出的hz,hz的脉冲进行选择输出的过程;本模块实现了双脉冲的二选一;最终目的为了计费模块中对行驶过程中不同的时段进行计价。

       æ¨¡å—元件如下:

       æŽ§åˆ¶æ¨¡å—框图

       æŽ§åˆ¶æ¨¡å—仿真波形为:

       æºç¨‹åºå¦‚下:

       Library IEEE;

       use IEEE.std_logic_.all;

       use IEEE.std_logic_arith.all;

       use IEEE.std_logic_unsigned.all;

        entity kongzhi is

       port(en0,en1:in std_logic; --使能选择信号

        clk_in1:in std_logic; --分频输入信号

        clk_in2:in std_logic; --分频输入信号

        clk_out:out std_logic); --输出信号

        end kongzhi;

        architecture rt3 of kongzhi is

       begin

       process(en0,en1)

       begin

        if en0='1' then --实现二选一功能

        clk_out<=clk_in1;

        elsif en1='1' then

        clk_out<=clk_in2;

        end if;

        end process;

       end rt3;

       4.计费模块

        当计费信号start一直处于高电平即计费状态时,本模块根据控制模块选择出的信号从而对不同的单价时段进行计费。即行程在2km内,而且等待累计时间小于2min则为起步价5元;2km外以每公里1.4.元计费,等待累积时间超过2min则按每分钟1.3元计费。c0,c1,c2,c3分别表示费用的显示。

       æ¨¡å—元件为:

       è®¡è´¹æ¨¡å—框图

       è®¡è´¹æ¨¡å—仿真波形为:

       æºç¨‹åºå¦‚下:

       Library IEEE;

       use IEEE.std_logic_.all;

       use IEEE.std_logic_arith.all;

       use IEEE.std_logic_unsigned.all;

       entity jifei is

       port(clk2:in std_logic; --计费驱动信号

        start:in std_logic; --计费开始信号

        c0,c1,c2,c3:buffer std_logic_vector(3 downto 0));

       end jifei;

       architecture rt4 of jifei is

       begin

       process(clk2,start)

       begin

        if start='0'then c3<="";c2<="";c1<="";c0<=""; --起步价5元

        elsif clk2'event and clk2='1'then

        if c0="" then c0<="";

        if c1="" then c1<="";

        if c2="" then c2<="";

        if c3="" then c3<=""; --计价范围0~.9

        else c3<=c3+1;

        end if;

        else c2<=c2+1;

        end if;

        else c1<=c1+1;

        end if;

        else c0<=c0+1;

        end if;

       end if;

       end process;

       end rt4;

       5.显示模块

        显示模块完成计价,计时和计程数据显示。计费数据送入显示模块进行译码,最后送至以百元,十元,元,角为单位对应的数码管上显示。计时数据送入显示模块进行译码,最后送至以分为单位对应的数码管上显示。计程数据送入显示模块进行译码,最后送至以km为单位的数码管上显示。

        模块元件为:

        显示模块框图

       æºç¨‹åºå¦‚下:

       library ieee;

       use ieee.std_logic_.all;

       use ieee.std_logic_unsigned.all; --定义库包

       entity xianshi is --定义实体

       port(

        clk_scan:in std_logic; --扫描时钟信号端口设置

        c3,c2,c1,c0:in std_logic_vector(3 downto 0); --总费用输入端口

        k0,k1:in std_logic_vector(3 downto 0); --里程输入端口

        m0,m1:in std_logic_vector(3 downto 0); --等待时间输入端口

        sel:out std_logic_vector(2 downto 0); --控制数码管位选信号的扫描信号输出端口

        led:out std_logic_vector(6 downto 0); --数码管的控制端口

        led_dp:out std_logic --数码管的小数点输出端口

        );

       end xianshi;

       architecture rt5 of xianshi is

       signal duan:std_logic_vector(6 downto 0); --数码显示管中间变量

       signal shuju:std_logic_vector(3 downto 0); --选择输入端的中间变量

       signal cnt:std_logic_vector(2 downto 0); --控制数码管的中间变量

       signal xiaodian:std_logic; --小数点的中间变量

       begin

       process(clk_scan) --开始进程

       begin

        if clk_scan'event and clk_scan='1' then

        cnt<=cnt+1; --每有一个扫描信号上升沿实现加1扫描

        end if;

       end process; --结束进程

       process(cnt) --开始进程(选择扫描显示数码管)

       begin

        case cnt is --扫描时给每个数码管赋值

        when ""=>shuju<=c0;

        when ""=>shuju<=c1;

        when ""=>shuju<=c2;

        when ""=>shuju<=c3;

        when ""=>shuju<=k0;

        when ""=>shuju<=k1;

        when ""=>shuju<=m0;

        when ""=>shuju<=m1;

        when others=> null;

        end case;

        if (cnt="" or cnt="")

        then xiaodian<='1'; --在里程和总费用的个位处显示小数点

        else xiaodian<='0';

        end if;

       end process; --结束进程

       process(shuju) --开始进程(译码显示)

       begin

        case shuju is

        when ""=>duan<=""; --0

        when ""=>duan<=""; --1

        when ""=>duan<=""; --2

        when ""=>duan<=""; --3

        when ""=>duan<=""; --4

        when ""=>duan<=""; --5

        when ""=>duan<=""; --6

        when ""=>duan<=""; --7

        when ""=>duan<=""; --8

        when ""=>duan<=""; --9

        when others=>null;

        end case;

       end process;

       sel<=cnt;

       led<=duan;

       led_dp<=xiaodian;

       end rt5;

       äºŒã€è¯¾ç¨‹è®¾è®¡å·¥ä½œè®°å½•ï¼š

       åŒ…括:设计步骤与时间安排、调试步骤与时间安排、课题完成结果说明

       2.课题完成结果说明:

       æ­¤è®¡è´¹å™¨èƒ½å®žçŽ°èµ·æ­¥ä»·æ˜¯5元;实现实验要求的1公里计费一次单价,行驶公里大于2km时每公里按1.4元计费并能显示里程和总共的费用。当行驶了6公里,等待了4分钟时,费用显示为.8元。与计算公式总费用=起步费用+(里程-2公里)*里程单价+等候时间*等后单价;即.8=5+(6-2)*1.4+4*1.3。实验结果与理论结果完全一致,实验设计成功。