1.vhdl 实现时钟整点报时功能
2.北大14春学期《计算机应用基础》在线作业3
3.EDA课ç¨è®¾è®¡ï¼ç¨VHDLç¼ç¨ååºç§è½¦è®¡è´¹å¨
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都为,c 聊天源码然后分别赋值给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的abp zero演示源码值编译成对应的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
试卷总分: 测试时间:-- 试卷得分:
一、单选题(共道试题,共分。.net framework 源码下载)得分:
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的易语言源码ymbc编辑状态中,如果要输入希腊字母Ω,则需要使用()菜单。
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ãå®éªç»æä¸ç论ç»æå®å ¨ä¸è´ï¼å®éªè®¾è®¡æåã