7段数码管控制接口的设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

显示器程序
process(a) begin case a is when "0000"=>Y<="1111110"; when "0010"=>Y<="1101101"; when "0100"=>Y<="0110011"; when "0110"=>Y<="1011111"; when "1000"=>Y<="1111111"; when "1010"=>Y<="1110111"; when "1100"=>Y<="1001110"; when "1110"=>Y<="1001111"; end case; end process;
利用可编程逻辑器件进行 7段数码管控制接口的设计
目的 1.了解 了解7 1.了解7段数码管显示的原理及接口 驱动方法。 驱动方法。 2.利用可编程逻辑器件进行 利用可编程逻辑器件进行7 2.利用可编程逻辑器件进行7段数码 管定时更新。 管定时更新。
任务要求 1.将外部时钟进行分频处理 将外部时钟进行分频处理( 1.将外部时钟进行分频处理(编写分频功能 模块); 模块); 2.使用分频后的时钟进行计数 使用分频后的时钟进行计数, 2.使用分频后的时钟进行计数,得到数码管 输出控制的计数状态; 输出控制的计数状态; 3.当程序下载成功时 当程序下载成功时, 3.当程序下载成功时,7段数码管依次分时显 示递增或递减数据。 示递增或递减数据。
赋哪个值依赖于所选的信号条件 WHEN 语句 必须 互斥 (all different) OTHERS” 经常使用 “WHEN OTHERS” 来囊括未定义的情 况 Only one reference to the signal, 只有一个 <=) 赋值运算符 (<=)
WITH selection_signal SELECT signal_name <= value_1 WHEN value_1 of selection_signal, value_2 WHEN value_2 of selection_signal, ... value_n WHEN value_n of selection_signal, value_x WHEN OTHERS;
mux4_1: PROCESS (a, b, c, BEGIN 00” IF s = “00” 01” ELSIF s = “01” 10” ELSIF s = “10” ELSE x <= d ; END IF; END PROCESS mux4_1 ; d, s) THEN x <= a ; THEN x <= b ; THEN x <= c ;
x <=(a AND NOT(s(1)) AND NOT(s(0))) OR (b AND NOT(s(1)) AND s(0)) OR a (c AND s(1) AND NOT(s(0))) OR b (d AND s(1) AND s(0)) ;
c d s
2
x
mux
例(2)利用“WITH-SELECT-WHEN”设计 (2)利用 WITH-SELECT-WHEN” 利用“
s
a(3 DOWNTO 0) x(3 DOWNTO 0)
b(3 DOWNTO 0)
什么是一个VHDL 什么是一个VHDL的“进程”? VHDL的 进程”
进程: mux 的敏感信号是 a, b, and s. 这意 味着这些信号中无论哪个信号的值发生变化, 味着这些信号中无论哪个信号的值发生变化, 进程都会被唤醒, 进程都会被唤醒, 时序语句就会执行一遍并且 输出 x 被更新 1:逻辑能够时序实现或组合实现 注1:逻辑能够时序实现或组合实现 2:在敏感列表中的信号的顺序是无关紧要的 注2:在敏感列表中的信号的顺序是无关紧要的
例 (3):利用“WHEN-ELSE”设计 (3):利用“WHEN-ELSE”
同样的 4选1 多路选择器能以如下的 描述来定义: 描述来定义: x <= a b c d when (s = “00”) else when (s = “01”) else when (s = “10”) else ; a
利用VHDL语言设计组合逻辑电路概要 利用VHDL语言设计组合逻辑电路概要 VHDL
例如, 假如我们有如下两行语句代码: 例如, 假如我们有如下两行语句代码: c; x <= a OR b OR c; (e=‘ y <= x WHEN (e=‘1’) ELSE ‘0’; 这与如下的语句是同样的效果 : (e=‘ y <= x WHEN (e=‘1’) ELSE ‘0’; c; x <= a OR b OR c; 我们所写的语句的顺序是无关重要的, 我们所写的语句的顺序是无关重要的,因为它 并行工作) 们是并行语句 (并行工作)
例(1):利用布尔方程(公式)进行设计 (1):利用布尔方程(公式) 利用布尔方程
在VHDL中支持所有的标准的Boolean运算 VHDL中支持所有的标准的Boolean运算 中支持所有的标准的Boolean AND, OR, NOT, XOR, XNOR, NAND 例如: 的多路选择器, 例如: 一个 4选1 的多路选择器,如下图所 示
在VHDL语言中进行时序逻辑电路设计 VHDL语言中进行时序逻辑电路设计
时序逻辑语句 (意味着按照时序规定来执行语句) 意味着按照时序规定来执行语句) 有时我们需要建立复杂的模型函数. 有时我们需要建立复杂的模型函数. 在这种情 况下, 算法” 况下, 我们能使用一个 “算法” 或者一个模型 来描述这个函数, 来描述这个函数,这只能由时序语句来完成了 在时序语句中, 在时序语句中, 语句的顺序是很重要的 (见后 面的例子) 面的例子) 进程) 我们使用一个 process (进程)来标志一个时 序语句块的开始和结束 每个完整的进程都可以视为一个大的并发性语 在一个结构体中有很多个进程) 句 (在一个结构体中有很多个进程)
例 (2):利用“WITH-SELECT-WHEN”设计 (2):利用“WITH-SELECT-WHEN”
前面我们所见的 4选1 多路选择开关还能有如 下描述: 下描述: WITH s SELECT 00” s=“00” x <= a WHEN “00”, -- means when s=“00” s 01” b WHEN “01”, 2 a 10” c WHEN “10”, d WHEN OTHERS;
例 (3):利用“WHEN-ELSE”设计 (3):利用“WHEN-ELSE”
信号赋哪个值依赖于后面的条件 任何简单的表达式都可以是一个条件 仅仅一个值赋给信号, 仅仅一个值赋给信号, 只用一个赋值运算符 (<=) 经常在结尾用“ ELSE” 经常在结尾用“ ELSE” 来囊括未定义的条件
signal_name <= value_1 WHEN condition1 ELSE value_2 WHEN condition2 ELSE ... value_n WHEN conditionn ELSE value_x;
什么是一个 VHDL的 “进程” ? VHDL的 进程”
进程要么唤醒,要么是沉睡(active or inactive) 进程要么唤醒, 一个进程通常有一个敏感信号列表( 一个进程通常有一个敏感信号列表(sensitivity
list) list)
–当在敏感信号列表 中的一个信号变化时, 进程就被 唤 中的一个信号变化时, 醒(wakes up )并且所有的时序语句 都执行一遍 –例如, 对有时钟的敏感信号列表而言,在信号clock 的 例如, 对有时钟的敏感信号列表而言,在信号clock 变化沿处将激活进程
在进程的结尾, 在进程的结尾, 所有的输出都被更新并且进程开始 沉睡( ),直到下一个时刻敏感信号 重新 沉睡(sleep ),直到下一个时刻敏感信号 列表中的信号开始变化
什么是一个VHDL 什么是一个VHDL的“进程”? VHDL的 进程”
mux: PROCESS (a, b, s) BEGIN IF s = '0' THEN x <= a; ELSE x <= b; END IF; END PROCESS mux;
b c d
s
2
x
mux
例 (3):利用“WHEN-ELSE”设计 (3):利用“WHEN-ELSE”
WITH-SELECTWITH-SELECT-WHEN 和 WHEN-ELSE 的区别是什 WHEN么? –WITH-SELECT-WHEN 仅仅允许 一个 控制信 WITH-SELECT号 –WHEN-ELSE 支持许多不同的控制信号 WHEN–例如: 一个 优先编码器 例如: j <= w x y z when when when when (a (b (c (d = = = = ‘1 ’) ‘1 ’) ‘1 ’) ‘1 ’) else else else else
在VHDL语言中进行组合逻辑电路设计 VHDL语言中进行组合逻辑电路设计
我们可以用很多方法来描述组合逻辑 在接下来的内容中, 在接下来的内容中, 我们将来看一些描述 组合逻辑的示例, 组合逻辑的示例,以明白组合逻辑电路的 HDL语言描述方法 HDL语言描述方法 我们应该从以下所学的知识进行举一反三, 我们应该从以下所学的知识进行举一反三, 灵活应用到我们的设计当中; 灵活应用到我们的设计当中;即我们学到 的不仅仅是简单的一些知识, 的不仅仅是简单的一些知识,而更是一种 设计的方法
其方框图如下图所示: 其方框图如下图所示:
计数器程序
process(clk,rst) variable cn:std_logic_vector(3 downto 0); begin count<=cn; if rst='1' then cn:="0000";--异步清零; elsif clk'event and clk='1' then if cn="1111" then cn:="0000";--同步清零 可通过修改同 else 步清零条件来 cn:=cn+1; 修改计数范围 end if; end if; end process; end cnt_arch;
b c d x
mux
例 (2):利用“WITH-SELECT-WHEN”设计 (2):利用“WITH-SELECT-WHEN”
这里也能在一行中把所有的条件都写上: 这里也能在一行中把所有的条件都写上: WITH s SELECT 000” 001” 010” x <= a WHEN ”000” | “001” | “010”, 101” 111” b WHEN “101” | “111”, -- ‘|’ or” 说明是 “or” 运算符 c WHEN OTHERS;
when "0001"=>Y<="0110000"; when "0011"=>Y<="1111001"; when "0101"=>Y<="1011011"; when "0111"=>Y<="1110000"; when "1001"=>Y<="1111011"; when "1011"=>Y<="0011111"; when "1101"=>Y<="0111101"; when others=>Y<="1000111";
利用VHDL语言设计组合逻辑电路概要 利用VHDL语言设计组合逻辑电路概要 VHDL
组合逻辑语句 (意味着是并行语句) 意味着是并行语句) 执行” 在同一时刻) 并行语句就是 “执行” 并行 (在同一时刻) 前面我们见到的例子都是组合逻辑电路的表 述方法: 述方法: 布尔方程 WHEN-ELSE” “WHEN-ELSE”语句 “WITH-SELECT-WHEN”语句 WITH-SELECT-WHEN” 并行语句的顺序不重要(!!!!) 并行语句的顺序不重要(!!!!)
Baidu Nhomakorabea
应用时序语句进行组合逻辑电路的描述
我们已经看到了一些应用组合逻辑 语句来描述组合逻辑电路的例子 那么现在让我们来看一下如何应用 时序语句来描述组合逻辑电路... 时序语句来描述组合逻辑电路...
时序语句例(1) IF-THEN时序语句例(1):IF-THEN-ELSE (1):
例如, 一个四选一的多路选择器可以做如下描述: 例如, 一个四选一的多路选择器可以做如下描述:
相关文档
最新文档