EDA课程设计

发布 2022-09-30 20:00:28 阅读 3993

附录:程序: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计时...