- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一百进制实验报告一百进制实验报告
广东水利电力技术学院
实验报告
课 程 名 称 可编程逻辑器件
实验项目名称 100进制计数器
学 生 班 级 12电子2班
学 生 姓 名 许 炎 庆
2013年 05 月 19 日
一 任务分析
用数码管中的两位来表示个位和十位,然后用分频后的1hz左右的脉冲给个位,当每一个上升沿时个位加一,当加到九,再来一个上升沿时十位就加一。除了一个1hz的脉冲外还要一个1000hz左右的脉冲作为位扫描,还有一个译码。从0 开始 到99 刚好是100进制。
二 任务实施
1 使用vhdl语句,完成一百进制计数器的文本编辑。
2 源程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity dy is
port(clk,r,en:in std_logic; --r为清零开关,en为保持开关
d:out std_logic_vector(5 downto 0); --6位数码管
c:out std_logic_vector(6 downto 0)); --7段数码显示
end;
architecture du of dy is
signal clk_1:std_logic;
signal k:std_logic;
signal clk_2:std_logic;
signal ct:integer range 0 to 1; --接clk_1,二进制计数器
signal du:std_logic_vector(3 downto 0); --个,十位都要四位二进制数
signal d_1:std_logic_vector(5 downto 0); --d=d_1
signal c_1:std_logic_vector(6 downto 0); --c=c_1
signal l1,l2:std_logic_vector(3 downto 0);
begin
process(clk) --clk分频得1000hz脉冲clk_1
variable cnt1:integer range 0 to 250;
variable cnt2:integer range 0 to 100;
begin
if clkevent and clk=1 then
if cnt1=250 then
cnt1:=0;
if cnt2=100 then
cnt2:=0;
clk_1=not clk_1;
else
cnt2:=cnt2+1;
end if;
else
cnt1:=cnt1+1;
end if;
end if;
end process;
process(clk) --clk分频得1hz脉冲clk_2
variable cnt1:integer range 0 to 25000;
variable cnt2:integer range 0 to 1000;
begin
if clkevent and clk=1 then
if cnt1=25000 then
cnt1:=0;
if cnt2=1000 then
cnt2:=0;
clk_2=not clk_2;
else
cnt2:=cnt2+1;
end if;
else
cnt1:=cnt1+1;
end if;
end if;
end process;
process(clk_1) --clk_1目的是使个位和十位分开没联系,而且两个一直亮,因为clk_1很高
begin
if clk_1event and clk_1=1 then
if ct=1 then
ct=0;
else
ct=ct+1;
end if;
end if;
end process;
process(ct)
begin
case ct is
when 0=d_1=111101; --ct有0,1二种情况,当0时十位亮
when 1=d_1=111110; --当1时个位亮(如果clk-1很小,个位和十位就会闪只会亮一个
when others=null;
end case;
end process;
process(d_1)
begin
case d_1 is
when 111101=du=l1; --l2赋值给十位
when 111110=du=l2; --l1赋值给个位(他们
原创力文档


文档评论(0)