序列信号发生器
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四节 序列信号发生器
4、实验报告要求 写出计数器和数据选择器的VHDL语言源文件。 VHDL语言源文件 1)写出计数器和数据选择器的VHDL语言源文件。 列出仿真结果和实验箱运行结果。 2)列出仿真结果和实验箱运行结果。 写出心得体会。 3)写出心得体会。
第四节 序列信号发生器 设计步骤: 设计步骤: 由于序列长度为8 因此先设计一个模8计数器; 1. 由于序列长度为8,因此先设计一个模8计数器; 将模8计数器的状态码,通过组合电路转换成对应的序列码。 2. 将模8计数器的状态码,通过组合电路转换成对应的序列码。 电路如图所示
OUTPUT OUTPUT OUTPUT
q[2] q[1] q[0]
第四节 序列信号发生器
练习: 练习:Π发生电路的设计 要求:使电路依次显示Π的前八位: 要求:使电路依次显示Π的前八位:31415926 方法: 由于序列长度为8 因此先设计一个模8 方法: 由于序列长度为8,因此先设计一个模8计数 因此可利用74163实现; 74163实现 器,因此可利用74163实现;每计数一次显示 一位数据,可以利用case语句实现。 case语句实现 一位数据,可以利用case语句实现。
说明:if语句的每个条件都是一个布尔表达式, 说明:if语句的每个条件都是一个布尔表达式,返回值为布 语句的每个条件都是一个布尔表达式 尔类型。 个语句顺序执行, 尔类型。从1到n个语句顺序执行,当满足某一条件的顺序语 句执行完后就结束该if语句。 if语句 句执行完后就结束该if语句。
复习
case-when语句 case-when语句
条件句中的“=> 不是操作符 只相当于“THEN”作用 不是操作符, 作用。 条件句中的“=>”不是操作符,只相当于“THEN 作用。
第四节 序列信号发生器
1、实验目的 学会使用VHDL语言设计时序逻辑电路。 VHDL语言设计时序逻辑电路 1)学会使用VHDL语言设计时序逻辑电路。 学会使用VHDL语言设计二进制加法器功能模块。 VHDL语言设计二进制加法器功能模块 2)学会使用VHDL语言设计二进制加法器功能模块。 3)学会使用VHDL语言设计数据选择器功能模块。 学会使用VHDL语言设计数据选择器功能模块。 VHDL语言设计数据选择器功能模块 学会用原理图法组成序列信号发生器。 4)学会用原理图法组成序列信号发生器。 2、实验原理 计数型序列信号发生器的工作原理如教材6.1.3所示, 6.1.3所示 计数型序列信号发生器的工作原理如教材6.1.3所示,本实 验要求用计数器和数据选择器设计计数型序列信号发生器。 验要求用计数器和数据选择器设计计数型序列信号发生器。 3、实验内容 1)分析4位二进制计数器74163的逻辑功能,用VHDL语言设计二 分析4位二进制计数器74163的逻辑功能, VHDL语言设计二 74163的逻辑功能 进制计数器74163 74163。 进制计数器74163。 VHDL语言设计 语言设计8 数据选择器。 2)用VHDL语言设计8选1数据选择器。 用原理图法连接电路,设计00011011序列信号发生器。 00011011序列信号发生器 3)用原理图法连接电路,设计00011011序列信号发生器。 通过仿真和下载验证设计电路的正确性。 4)通过仿真和下载验证设计电路的正确性。
↑ ↑ × × ↑
0 1 1 1 1
× 0 1 1 1
× × × × 0 1 × 0 1 1
功能 同步清 零 同步 置 数 保持(包括 的状态) 保持 包括CO的状态 包括 的状态 保持(CO=0) 保持 同步计数
如果 时钟上升沿出现 那么 如果 清零信号有效 那么 输出为0; 输出为 ; 或者如果 置数信号有效 那么 输出=d; 输出= ; 或者如果 enp和ent都为高电平 那么 和 都为高电平 输出为1111 那么 如果 输出为 输出为0000; 输出为 ; 或者 同步计数; 同步计数;
复习
if语句 if语句
if语句是具有条件控制功能的语句, if语句是具有条件控制功能的语句,它根据指定的条 语句是具有条件控制功能的语句 件及其条件是否成立来确定语句的执行顺序,格式如下。 件及其条件是否成立来确定语句的执行顺序,格式如下。
if 条件 then 条件1 组顺序语句; 第1组顺序语句; 组顺序语句 elsif 条件 then 条件2 组顺序语句; 第2组顺序语句; 组顺序语句 … … elsif 条件 then 条件n 组顺序语句; 第n组顺序语句; 组顺序语句 else 组顺序语句; 第n+1组顺序语句; + 组顺序语句 end if; ;
如果 时钟上升沿出现 那么 如果 清零信号有效 那么 输出为0; 输出为 ; 或者如果 置数信号有效 那么 输出= ; 输出=d; 或者如果 enp和ent都为高电平 那么 和 都为高电平 输出为1111 那么 如果 输出为 输出为0000; 输出为 ; 或者 同步计数; 同步计数;
第四节 序列信号发生器 74163 VHDL语言描述 语言描述
第四节 序列信号发生器
复习
学习了两种程序包 std_logic_1164程序包 std_logic_1164程序包 std_logic_unsigned程序包:定义了可用于 std_logic_unsigned程序包: 程序包 integer数据类型和std_logic及std_logic_vector数据 数据类型和std_logic integer数据类型和std_logic及std_logic_vector数据 类型混合运算的运算符 并定义了由std_logic_vector 运算符, 类型混合运算的运算符,并定义了由std_logic_vector integer的转换函数。 到integer的转换函数。
第四节 序列信号发生器
同步4位二进制计数器74163的功能 同步4位二进制计数器74163的功能 74163 a.同步清零 a.同步清零 b.同步置数 b.同步置数 c.保持 c.保持 d.同步置计数 d.同步置计数
第四节 序列信号发生器
74163功能表 功能表
CLK CLR LD ENP ENT
case-when语句根据条件表达式的值执行一组顺序语 case-when语句根据条件表达式的值执行一组顺序语 句,其格式如下
case 条件表达式 is 条件表达式的值=>一组顺序语句; when 条件表达式的值=>一组顺序语句; =>一组顺序语句 … … … 条件表达式的值=>一组顺序语句; =>一组顺序语句 when 条件表达式的值=>一组顺序语句; case; end case;
第四节 序列信号发生器
3wenku.baidu.com1 4 1 5 9 2 6
第四节 序列信号发生器
电路连接如图所示
第四节 序列信号发生器
练习: 练习:e发生电路的设计 要求:使电路依次显示e的前八位: 要求:使电路依次显示e的前八位:27182818 方法: 由于序列长度为8 因此先设计一个模8 方法: 由于序列长度为8,因此先设计一个模8计数 因此可利用74163实现; 74163实现 器,因此可利用74163实现;每计数一次显示 一位数据,可以利用case语句实现。 case语句实现 一位数据,可以利用case语句实现。
15
0
1
2
74163
第四节 序列信号发生器
按要求连接电路,配置下载, 按要求连接电路,配置下载,利用模 验证电路的正确性。 式4验证电路的正确性。 验证电路的正确性
第四节 序列信号发生器
连接电路如图所示, 连接电路如图所示,其中 q[2],q[1],q[0]和数码管连接用来 和数码管连接用来 显示计数个数
时钟边沿表示: 时钟边沿表示: clk’event and clk=‘1’ 表示上升沿 clk’event and clk=‘0’ 表示下降沿
VHDL 数据对象
信号(Signal) 信号(Signal) 代表电路内部信号传输线路,在元件之间起互连作用, 代表电路内部信号传输线路,在元件之间起互连作用, 相当于连线。 相当于连线。 说明:1.信号是一个全局量,可以在Entity和Architecture 说明:1.信号是一个全局量,可以在Entity和 信号是一个全局量 Entity 中定义,但可在VHDL语言的并行部分和顺序部分同时使用 VHDL语言的并行部分和顺序部分同时使用。 中定义,但可在VHDL语言的并行部分和顺序部分同时使用。 2.信号赋值的执行和信号值的更新有延时,只有到了规定的 2.信号赋值的执行和信号值的更新有延时,只有到了规定的 信号赋值的执行和信号值的更新有延时 仿真时间才赋值,即延时以后信号才能得到新值, 仿真时间才赋值,即延时以后信号才能得到新值,否则保持 原值不变。 原值不变。 3.信号赋值语句在进程内部出现时,是一种顺序描述语句; 3.信号赋值语句在进程内部出现时,是一种顺序描述语句; 信号赋值语句在进程内部出现时 在结构体的进程之外时是一种并发语句。 在结构体的进程之外时是一种并发语句。 4.信号说明语句格式: 信号名:数据类型; 4.信号说明语句格式:signal 信号名:数据类型; 信号说明语句格式 5.信号赋值只能用<=,信号赋值语句格式:信号<=表达式; 5.信号赋值只能用<=,信号赋值语句格式:信号<=表达式; 信号赋值只能用<= <=表达式
第四节 序列信号发生器
变量定义 变量赋值用:= 变量赋值用
变量的值不能 带出进程, 带出进程,只 能将变量值赋 予信号, 予信号,由信 号带出进程
CLR LD
D0 D1 D2 D3 CLK ENP ENT Q0
Q1 Q2 Q3
RCO
12
13
14
VHDL 数据对象
变量(variable) 变量(variable) 用于对电路中间数据的临时存储, 用于对电路中间数据的临时存储,不代表电路的某一元件 说明:1.变量是一个局部量 只能在Process Function中 Process和 说明:1.变量是一个局部量 ,只能在Process和Function中 变量是一个 定义,只能在VHDL语言程序的顺序部分说明和使用, VHDL语言程序的顺序部分说明和使用 定义,只能在VHDL语言程序的顺序部分说明和使用,只能出现 在进程、过程和函数中。 在进程、过程和函数中。 2.变量赋值没有延迟,变量在赋值语句执行后立即得到新值 2.变量赋值没有延迟,变量在赋值语句执行后立即得到新值 变量赋值没有延迟 立即 3.变量赋值语句只是一种顺序描述语句, 3.变量赋值语句只是一种顺序描述语句,而不能作为并发语 变量赋值语句只是一种顺序描述语句 句使用。 句使用。 4.变量定义语句格式: 变量名:数据类型; 4.变量定义语句格式: variable 变量名:数据类型; 变量定义语句格式 5.变量赋值只能用“:= ,语句格式:目标变量:=表达式; :=表达式 5.变量赋值只能用“:=”,语句格式:目标变量:=表达式; 变量赋值只能用
说明:case-when语句中条件表达式的值必须列举穷尽, 说明:case-when语句中条件表达式的值必须列举穷尽, 语句中条件表达式的值必须列举穷尽 而且不能重复。 而且不能重复。 不能穷尽的表达式用others表示when others=>一组顺序语句; =>一组顺序语句 不能穷尽的表达式用others表示when others=>一组顺序语句; others表示
复习
进程语句
进程主要用于描述顺序语句,其格式如下: 进程主要用于描述顺序语句,其格式如下: 主要用于描述顺序语句
process (敏感信号表 ) --变量声明语句; 变量声明语句 --变量声明语句; begin --顺序语句 --顺序语句 end process; 敏感信号(包括端口信号) 敏感信号(包括端口信号)指那些值发生改变后能引起 进程语句执行的信号。当敏感信号发生改变时, 进程语句执行的信号。当敏感信号发生改变时,进程启 begin和end之间的语句从上到下顺序执行一次 之间的语句从上到下顺序执行一次, 动,begin和end之间的语句从上到下顺序执行一次,然 后返回进程语句开始,等待下一次敏感信号的变化。 后返回进程语句开始,等待下一次敏感信号的变化。因 此进程语句有两种状态:等待状态和执行状态。 此进程语句有两种状态:等待状态和执行状态。