附录:程序:1)时基分频模块的vhdl源程序(
library ieee;
use ——ieee标准程序包对本设计实体部分全部开放。
use ——混合运算不考虑符号。
entity cb10 is实体描述。
port(clk:in std_logic; —输入时钟信号。
co:out std_logic); 分频输出信号。
end cb10;
architecture art of cb10 is ——结构体描述。
signal count:std_logic_vector(3 downto 0); 说明语句,定义count为。
标准一维数组信号。
begin开始描述本过程的逻辑功能。
process(clk进程。
beginif rising_edge(clk)then——if语句,实现选择功能。
if count="1001"then
count<="0000";
co<='1';
elsecount<=count+1;
co<='0';
end if;
end if
end process;
end art;
2)控制模块的vhdl源程序(
library ieee;
use use
entity ctrl is
port(clr,clk,sp:in std_logic;
en:out std_logic);
end;architecture beh**e of ctrl is
constant s0:std_logic_vector(1 downto 0):=00"; 常量赋初值。
constant s1:std_logic_vector(1 downto 0):=01";
constant s2:std_logic_vector(1 downto 0):=10";
constant s3:std_logic_vector(1 downto 0):=11";
type states is(s0,s1,s2,s3定义枚举类型数据,4个状态。
适量长度为2
signal current_state,next_state:states;
begincom:process(sp,current_state)
begincase current_state iscase语句,根据表达式的值选。
择执行语句。
when s0=>en<='0';
if sp='1'thenif语句,实现二选一功能。
next_state<=s1;
elsenext_state<=s0;
end if;
when s1=>en<='1';
if sp='1'then
next_state<=s1;
elsenext_state<=s2;
end if;
when s2=>en<='1';
if sp='1'then
next_state<=s3;
elsenext_state<=s2;
end if;
when s3=>en<='0';
if sp='1'then
next_state<=s3;
elsenext_state<=s0;
end if;
end case;
end process;
synch:process(clk)
beginif clr='1'then
current_state<=s0;
elsif clk'event and clk='1'then
current_state<=next_state;
end if;
end process;
end beh**e;
3)计时模块的vhdl源程序。
十进制计数器的vhdl源程序——
library ieee;
use use
entity cdu10 is
port(clk:in std_logic; —时钟信号。
clr:in std_logic; —清零信号。
en:in std_logic; —计数使能信号。
cn:out std_logic; —计数输出信号。
count10:out std_logic_vector(3 downto 0));计数值。
end cdu10;
architecture art of cdu10 is
signal scount10:std_logic_vector(3 downto 0);
begincount10 <=scount10;
process(clk,clr,en)
beginif (clr='1')then
scount10 <=0000";cn <=0';
elsif rising_edge(clk) then
if(en='1') then
if scount10="1001"then
cn <=1';
scount10 <=0000";
elsecn <=0';
scount10 <=scount10+'1';
end if;
end if;
end if;
end process;
end art;
六进制计数器的vhdl源程序——
library ieee;
use use
entity cdu6 is
port(clk:in std_logic;
clr:in std_logic;
en:in std_logic;
cn:out std_logic; —计数输出信号。
count6:out std_logic_vector(3 downto 0计数值。
end cdu6;
architecture art of cdu6 is
signal scount6:std_logic_vector(3 downto 0);
begincount6 <=scount6;
process(clk,clr,en)
beginif (clr='1')then
scount6 <=0000";cn <=0';
elsif rising_edge(clk) then
if(en='1') then
if scount6="0101"then
cn <=1';
scount6 <=0000";
elsecn <=0';
scount6 <=scount6+'1';
end if;
end if;
end if;
end process;
end art;
计时器的vhdl源程序——
library ieee;
use entity count is
port(clk:in std_logic;
clr:in std_logic;
en:in std_logic;
s_1ms: out std_logic_vector(3 downto 0); 毫秒计数值。
s_10ms: out std_logic_vector(3 downto 0); 十毫秒计数值。
s_100ms: out std_logic_vector(3 downto 0); 百毫秒计数值。
s_1s: out std_logic_vector(3 downto 0); 秒计数值。
s_10s: out std_logic_vector(3 downto 0); 十秒计数值。
m_1min: out std_logic_vector(3 downto 0); 分计数值。
m_10min: out std_logic_vector(3 downto 0); 十分计数值。
hour: out std_logic_vector(3 downto 0));小时计数值。
end count ;
architecture art of count is
component cdu10元件定义语句。
port(clk:in std_logic;
clr:in std_logic;
en:in std_logic;
EDA课程设计
题目一 数字钟设计 学号1 15 一 实验目的。学习并掌握数字钟的原理 设计方法。二 实验内容。计数始终由模60秒计数器 模60分计数器 模24小时计数器 报时模块 分 时设定模块及输出显示模块构成。可以采用同步计数器或异步计数器设计方法。三 实验要求。计时范围为0小时0分0秒至23小时59分59秒...
eda课程设计
哈尔滨工业大学 威海 信电学院电子信息工程。一 软硬件介绍。1软件部分介绍。1.1 quartus ii 是altera公司的综合性pld fpga开发软件,支持原理图 vhdl veriloghdl以及ahdl altera hardware description language 等多种设计输...
eda课程设计
目录。1 引言 2 1.1 课程设计的目的与任务 2 1.2 课程设计的内容 2 1.3课程设计仪器设备 2 1.4 课程设计的题目 2 1.5 方案的选择 2 2设计方案 3 2.1 设计原理 3 2.2各功能模块的原理及其源程序 3 2.2.1控制模块 3 2.2.2分频模块 4 2.2.3计时...