EDA原理及应用 何宾 2008.11.

Slides:



Advertisements
Similar presentations
九年级物理一轮复习 第一章 声现象 知识要点. 1. 声音的产生和传播  ( 1 )声音的产生:声音是由于物体的振动产生的。  凡是发声的物体都在振动。振动停止,发声也停止。  ( 2 )声源:正在发声的物体叫声源。固体、液体、气体 都可以作为声源,有声音一定有声源。  ( 3 )声音的传播:声音的传播必须有介质,声音可以在.
Advertisements

什么是SOPC: SOPC是英文System On a Programmable Chip的缩写,称为片上可编程系统。SOPC将传统的EDA技术、计算机系统、嵌入式系统、数字信号处理等融为一体,综合了各自的优势,且在结构上形成一块芯片。 为什么用SOPC:SOPC是现代电子技术和电子系统设计的发展趋势,建立了电子系统设计的新模式。用户利用SOPC开发平台,自行设计高速、高性能的DSP处理器、特定功能的CPU及其外围接口电路,创建结构最为简洁的电子系统。
做实验过程中发现的问题: 新建时工程文件夹建立了,但所建实体文件并没存放在其中 文件名不能用汉字
《 E D A 技 术》 课 程 教 学 讲授:伍宗富 湖南文理学院电气与信息工程学院 2017年3月19日星期日.
第4章 VHDL设计初步.
Combinational Logic 組合邏輯
第6章 VHDL设计应用实例 6.1 8位加法器的设计 6.3 序列检测器的设计 6.4 正负脉宽数控调制信号发生器的设计
电工电子实验中心.
EPF10K10TI144-4晶片燒錄.
第三章 组合逻辑电路 第一节 组合电路的分析和设计 第二节 组合逻辑电路中的竞争与冒险 第三节 超高速集成电路硬件描述语言VHDL
題目:十六對一多工器 姓名:李國豪 學號:B
第1章 FPGA概述 1.1 FPGA的发展历程 1.2 FPGA的基本原理 1.3 FPGA的设计方法 1.4 FPGA的设计流程
VHDL數位電路實習與專題設計 文魁資訊-UE301
VHDL數位電路實習與專題設計 文魁資訊-UE301
8.9二进制振幅键控(ASK) 调制器与解调器设计
Chapter 5 Verilog硬體描述語言
VHDL 硬體描述語言 數位電路設計實務 第四章 VHDL 的語言結構.
版权所有,禁止未经授权的商业使用行为 何宾 Tel: 北京中教仪装备技术有限公司.
第4章 常用EDA工具软件操作指南 4.1 Lattice ispEXPERT 操作指南
VHDL 硬體描述語言 數位電路設計實務 第六章 函數副程序以及套件程式庫.
EDA原理及应用 何宾
使用VHDL設計—4位元減法器 通訊一甲 B 楊穎穆.
EDA原理及应用 何宾
使用VHDL設計—4位元加法器 通訊一甲 B 楊穎穆.
第九章 数字系统设计 数字系统设计概述 ASM图、MDS图以及 ASM图至MDS图的转换 数字密码引爆器系统设计 数字系统设计实例 小结.
第四阶段实验 ISP器件的设计与应用 一、实验目的 二、实验内容与要求 三、ISP器件的开发流程 四、EDA Pro2K实验系统介绍
欢迎参加VHDL培训 VHDL培训教程 浙江大学电子信息技术研究所 电子设计自动化(EDA)培训中心
第13章 数字电路基础 13.1 数字电路概述 13.2 数字电路中的数值与码制 13.3 逻辑代数 13.4 逻辑门电路
使用VHDL設計—向上&向下計數器 通訊一甲 B 楊穎穆.
EDA 原理及应用 何宾
使用VHDL設計-XOR_GATE 通訊一甲 B 楊穎穆.
EDA 技术及应用 实验安排.
第2章 Quartus II设计向导 2.1 频率计的VHDL设计 2.2 使用宏功能块设计频率计 2.3 嵌入式系统块ESB的应用
EDA 原理及应用 何宾
使用VHDL設計--Moore Machine
JTAG INTERFACE SRAM TESTER WITH C-LCM
陳慶瀚 機器智慧與自動化技術(MIAT)實驗室 國立中央大學資工系 2013年5月28日
EDA 技术实用教程 第 5 章 QuartusII 应用向导.
使用VHDL設計-多工器/解多工器 通訊一甲 B 楊穎穆.
第12章 图像边缘检测器的设计与分析 12.1 系统设计要求 12.2 系统设计方案 12.3 主要LPM原理图和VHDL源程序
第 2 章 数字逻辑电路基础 和计算机中的逻辑部件
第六章 安全衛生工作守則 6-1 前 言  6-2 訂定依據相關法令規定  6-3 工作守則製作程序及製作前應注意事項  6-4 如何訂定適合需要之安全衛生工作守則  6-5 結 論.
第五章 VHDL设计基础 本章重点: 本章难点: VHDL程序结构 VHDL的基本数据类型 VHDL的基本描述语句 基本组合逻辑电路设计
義守大學電機工程學系 陳慶瀚 第3章 VHDL Concurrent語法 義守大學電機工程學系 陳慶瀚
第六章 VHDL设计共享.
第五章 VHDL主要描述语句.
移相正弦信号发生器设计 采用直接数字综合器DDS发生器的设计 原理:图1是此电路模型图
使用VHDL設計—4位元ALU電路 通訊一甲 B 楊穎穆.
第一次上机安排 第六周 第七周 周一晚(提高1、2,通信001~012) 周二上(通信014~085) 周四上(通信086~154)
抢答器 设计一个2人抢答器。要求如下: 设计任务 1.两人抢答,先抢为有效,用发光二极 管显示是否抢到优先答题权。
计算机学院 数字逻辑实验的要求.
使用VHDL設計 七段顯示器 通訊工程系 一年甲班 姓名 : 蘇建宇 學號 : B
北投溫泉博物館 建築特色 ★小組成員:高103林孟璇、林念儀、施妤柔★.
數位邏輯設計 VHDL.
Xilinx FPGA Design Flow
使用VHDL設計-XOR_GATE 通訊一甲 B 楊穎穆.
使用VHDL設計-8x1多工器 通訊一甲 B 楊穎穆.
自停式向下計數器 通訊一甲 B 楊穎穆.
数字时钟设计及实现 何宾
第7章 VHDL设计应用实例 7.1 8位加法器的设计 7.2 分频电路 7.3 数字秒表的设计.
使用VHDL設計-8x3編碼電路 通訊一甲 B 楊穎穆.
可變式計數器 通訊一甲 B 楊穎穆.
使用VHDL設計-七段顯示 通訊一甲 B 楊穎穆.
陳慶瀚 機器智慧與自動化技術(MIAT)實驗室 國立中央大學資工系 2009年10月22日
2.4 让声音为人类服务.
Programmable Logic System Design
陳慶瀚 機器智慧與自動化技術(MIAT)實驗室 國立中央大學資工系 2013年5月28日
使用VHDL設計-七段顯示 通訊一甲 B 楊穎穆.
第七章 基本逻辑电路设计.
Programmable Logic System Design
Presentation transcript:

EDA原理及应用 何宾 2008.11

第11章 第十一章 数字时钟设计-本章概要 本章给出了PLD器件在复杂数字系统的典型应用实例-数字时钟的设计。数字时钟的设计也是PLD在复杂数字系统的经典应用。 该章首先介绍了数字时钟的功能要求和整体结构;随后具体介绍了数字时钟的模块设计,其中包括数字时钟控制信号和控制模块的具体结构。本章最后详细描述了设计的具体实现过程,具体包括数字时钟的计数模块设计、计数时钟及扫描时钟设计和显示控制模块设计。

数字时钟设计-数字时钟的功能要求 第十一章 ● 数字钟时常见的一种计数装置,数字钟以1Hz的频率工作。该设计完成数字钟的运行和显示。其主要功能有: 数字钟以1Hz的频率工作,其输入频率为1MHz。 数字钟显示时、分、秒信息。这些显示信息在6个7 段数码管上完成。 通过按键设置时、分信息。并且具有对数字钟的复位功能。 复位键将时、分、秒清零,并做好重新计数的准备。 按键具有预置时、分的功能。分别对当前的时和分信息做递增设置和递减设置。

第十一章 数字时钟设计-数字时钟的结构 ●

数字时钟设计-数字时钟的结构 第十一章 图11.1给出了该数字钟的结构图。从图中可以看到,数字钟由: 复位按键(reset); ● 图11.1给出了该数字钟的结构图。从图中可以看到,数字钟由: 复位按键(reset); 小时递增按键(hour_inc); 小时递减按键(hour_dec); 分钟递增按键(min_inc); 分钟递减按键(min_dec); 时钟输入; 7段LED显示LED管选择信号线sel; LED码控制信号线(segment)

数字时钟设计-数字时钟的信号 第十一章 该数字钟的控制部分由PLD芯片完成。该芯片的输入和输出接口由下面信号组成: 输入信号: ● 该数字钟的控制部分由PLD芯片完成。该芯片的输入和输出接口由下面信号组成: 输入信号: 复位信号(reset) 时钟输入信号(clk) 小时递增信号(hour_inc) 小时递减信号(hour_dec) 分钟递增信号(min_inc) 分钟递减信号(min_dec)

第十一章 数字时钟设计-数字时钟的信号 ● 输出信号: LED选择信号(sel) LED码显示控制信号(segment)

第十一章 数字时钟设计-控制模块结构 ● 该设计分成下面四个模块:定时时钟模块、扫描时钟模块、按键处理模块、定时计数模块和显示控制模块。图11.2给出了这几个模块之间的信号连接关系。

数字时钟设计-控制模块结构 第十一章 1、按键处理模块 ● 1、按键处理模块 由于VHDL语言的规则,将按键的处理和定时模块设计在一起。为了描述清楚,将对按键的处理进行说明。在该设计中,采用异步复位电路方式。当复位信号低有效时,计数器停止计数,时、分、秒清零。 对于小时的递增、递减按键操作,通过一个1Hz的计数时钟采样。图11.3给出了递增、递减的操作时序。

第十一章 数字时钟设计-控制模块结构 ●

第十一章 数字时钟设计-控制模块结构 ● 当1Hz的div_clk信号的上升沿到来时,检测hour_inc和hour_dec按键,图中的虚线表示在时钟的上升沿对按键信号进行采样。当hour_inc或hour_dec按键低有效时,对小时进行递加或递减操作。 对于分钟的递加、递减按键操作,也是通过一个1Hz的计数时钟采样。原理同图11.4。

数字时钟设计-控制模块结构 第十一章 2、定时时钟模块 ● 2、定时时钟模块 定时时钟模块其作用就是将外部提供的1MHz的时钟,通过分频器后向模块内的定时计数模块提供1Hz的定时计数时钟。在设计定时时钟模块时,采用同步计数电路。

数字时钟设计-控制模块结构 第十一章 3、扫描时钟模块 ● 3、扫描时钟模块 扫描时钟模块的作用就是通过对1MHz的分频处理后,向显示控制模块提供合适的显示扫描时钟,该时钟必须经过合理的设计,才能保证7段数码显示的稳定。在设计扫描时钟模块时,采用同步计数电路。

数字时钟设计-控制模块结构 第十一章 4、定时计数模块 ● 4、定时计数模块 定时计数模块是该设计中最重要的一部分,在设计该模块时,为了便于后续显示控制模块的设计,将时、分、秒进行分离,即小时分成了小时的十位和个位分别处理,分钟分成了分钟的十位和个位分别处理。秒分成了秒的十位和个位分别处理。在该设计中,采用24小时计数模式。 例如:13:28:57。13为小时的表示,1为小时的十位,3为小时的个位;28为分钟的表示,2为分钟的十位,8为分钟的个位;57为秒的表示,5为秒的十位,7为秒的个位。

数字时钟设计-控制模块结构 第十一章 ● 秒的个位计数从0-9,即十进制计数。当秒的个位计数到9后,准备向秒的十位进位。秒的十位计数从0-5,即六进制计数。当秒的十位计数到5后,准备向分的个位进位。 分钟的个位计数从0-9,即十进制计数。当分钟的个位计数到9后,准备向分钟的十位进位。分钟的十位计数从0-5,即六进制计数。当分钟的十位计数到5后,准备向小时的个位进位。 对于小时的处理比较复杂,小时的十位和个位之间存在下面的关系: 当小时的十位为0或1时,小时的个位可以计数范围为0-9,即十进制计数; 当小时的十位为2时,小时的各位可以计数的范围为0-3,即四进制计数;

第十一章 数字时钟设计-控制模块结构 ●

数字时钟设计-控制模块结构 第十一章 5、显示控制模块 ● 5、显示控制模块 显示控制模块主要作用是在7段数码管上正确的显示0-9的数字。sel三位LED选择线和3-8译码器相连

整个工程窗口:含设计时钟源文件、仿真测试文件、用户约束文件 数字时钟设计-控制模块结构 第十一章 ● 整个工程窗口:含设计时钟源文件、仿真测试文件、用户约束文件

第十一章 数字时钟设计-行为仿真结果 ●

第十一章 数字时钟设计-布局布线仿真结果 ●

数字时钟设计-用户约束文件设置 第十一章 选择“project->new source”; ● 选择“project->new source”; 设置实现约束文件类型Implementation Constraints File,文件名clock; 单击“下一步”,选中与“clock”关联; 单击“下一步”,单击“完成”; 选中“clcok.ucf”文件,在Process view窗口双击“Assign package pins”,出现Xinlinx PACE窗口界面;

数字时钟设计- Xinlinx PACE窗口界面 第十一章 数字时钟设计- Xinlinx PACE窗口界面 ●

第十一章 数字时钟设计-用户约束文件设置 ● 6. 单击Design Object List-IO Pins窗口中每一信号后的Loc,可以输入对应的FPGA引脚,形式如P78。设置完成,保存文件,退出Xilinx PACE窗口,完成引脚分配。

数字时钟设计-引脚分配文件 第十一章 ●

数字时钟设计-编程下载验证 第十一章 ● 1.首先选中“Generate Programming File ”,右键单击,单击“Properties”; 2.选中“Process Properties”窗口下的“Startup options”标签,设置“FPGA start-up clock”为JTAG,单击“确定”;

数字时钟设计-编程下载验证 第十一章 ●

数字时钟设计-编程下载验证 第十一章 ● 3.在如下图所示的“Process for source:clock-behavioral”中,双击Configure Device (iMPACT).

数字时钟设计-编程下载验证 第十一章 ● 4.系统自动进行综合、实现过程,若没有错误,将出现如下窗口,单击“下一步”,单击“完成”;

数字时钟设计-编程下载验证 第十一章 5.出现一个确认窗口,告知检测到一个器件,单击“确定”按钮; ● 5.出现一个确认窗口,告知检测到一个器件,单击“确定”按钮; 6.选择刚刚生成的bit文件,单击“打开”; 7.可能会出现警告,单击“确定”; 8.此时界面中JTAG链上只有一个器件,型号为 XC3S400,单击鼠标右键,单击“Program…”,完成对器件编程,进行实际验证。

数字时钟设计-主程序 第十一章 ● library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; --实体定义部分 entity clock is port( clk : in std_logic; rst : in std_logic; inc_min : in std_logic; sub_min : in std_logic; inc_hour : in std_logic; sub_hour : in std_logic; sel : out std_logic_vector(2 downto 0); q : out std_logic_vector(7 downto 0)); end clock;

数字时钟设计-主程序 第十一章 ● --信号定义: architecture Behavioral of clock is signal sec_counter1:std_logic_vector(3 downto 0); signal sec_counter2:std_logic_vector(3 downto 0); signal min_counter1:std_logic_vector(3 downto 0); signal min_counter2:std_logic_vector(3 downto 0); signal hour_counter1:std_logic_vector(3 downto 0); signal hour_counter2:std_logic_vector(3 downto 0); signal divcounter : std_logic_vector(3 downto 0); signal div_clk : std_logic; signal scancounter : std_logic_vector(1 downto 0); signal scan_clk : std_logic; signal scan_out : std_logic_vector(2 downto 0); signal secseg1,secseg2,minseg1,minseg2,hourseg1,hourseg2:std_logic_vector(7downto 0); begin

数字时钟设计-主程序 第十一章 --计数时钟,对外部输入时钟分频,此处只适用于仿真,实际进行时间计数时,分频后时钟应该满足1HZ。 ● process(rst,clk) begin if(rst='0')then divcounter<="0000"; div_clk<='0'; elsif(rising_edge(clk)) then if(divcounter="1111") then div_clk<=not div_clk; else divcounter<=divcounter+'1'; end if; end process;

数字时钟设计-主程序 第十一章 ● --仿真时数码管扫描时钟,实际中需根据具体情况进行调解时钟频率 process(rst,clk) begin if(rst='0')then scancounter<="00"; scan_clk<='0'; elsif(rising_edge(clk)) then if(scancounter="11") then scan_clk<=not scan_clk; else scancounter<=scancounter+'1'; end if; end process;

数字时钟设计-主程序 第十一章 --时钟计数部分主进程 --时钟复位 clock:process(div_clk,rst) begin ● --时钟计数部分主进程 --时钟复位 clock:process(div_clk,rst) begin if(rst='0')then sec_counter1<=X"0"; sec_counter2<=X"0"; min_counter1<=X"0"; min_counter2<=X"0"; hour_counter1<=X"0"; hour_counter2<=X"0";

数字时钟设计-主程序 第十一章 --手动调分,递增 elsif(rising_edge(div_clk))then ● --手动调分,递增 elsif(rising_edge(div_clk))then if(inc_min='0') then if(min_counter1=X"9") then min_counter1<=X"0"; if(min_counter2>=X"5") then min_counter2<=X"0"; else min_counter2<=min_counter2+1; end if; min_counter1<=min_counter1+1;

数字时钟设计-主程序 第十一章 --手动调分,递减 elsif(sub_min='0') then ● --手动调分,递减 elsif(sub_min='0') then if(min_counter1=X"0") then min_counter1<=X"9"; if(min_counter2=X"0")then min_counter2<=X"5"; else min_counter2<=min_counter2-1; end if; min_counter1<=min_counter1-1;

数字时钟设计-主程序 第十一章 ● --手动调时,增时 elsif(inc_hour='0') then if(hour_counter2=X"2")then if(hour_counter1=X"3")then hour_counter1<=X"0"; hour_counter2<=X"0"; else hour_counter1<=hour_counter1+1; end if; if(hour_counter1=X"9") then hour_counter2<=hour_counter2+1;

数字时钟设计-主程序 第十一章 ● --手动调时,减时 elsif(sub_hour='0') then if(hour_counter1=X"0")then if(hour_counter2=X"0")then hour_counter1<=X"3"; hour_counter2<=X"2"; else hour_counter2<=hour_counter2-1; hour_counter1<=X"9"; end if; hour_counter1<=hour_counter1-1;

数字时钟设计-主程序 第十一章 ● --时分秒正常计数 else if(sec_counter1>=X"9") then if(min_counter1>=X"9") then min_counter1<=X"0"; if(min_counter2>=X"5") then min_counter2<=X"0"; if(hour_counter2=X"2") then if(hour_counter1=X"3") then hour_counter1<=X"0"; hour_counter2<=X"0";

数字时钟设计-主程序 第十一章 ● else hour_counter1<=hour_counter1+1; end if; if(hour_counter1=X"9") then hour_counter1<=X"0"; hour_counter2<=hour_counter2+1; min_counter2<=min_counter2+1;

数字时钟设计-主程序 第十一章 ● else min_counter1<=min_counter1+1; end if; sec_counter2<=sec_counter2+1; sec_counter1<=sec_counter1+1; end process clock;

数字时钟设计-主程序 第十一章 ● --生成扫描时钟 process(rst,scan_clk) begin if (rst='0') then scan_out<="000"; elsif(rising_edge(scan_clk)) then if(scan_out="101")then else scan_out<=scan_out+1; end if; end process;

数字时钟设计-主程序 第十一章 ● --扫描输出进程 process(scan_out) begin case scan_out is when "000" => q<=secseg1; sel<="000"; when "001" => q<=secseg2; sel<="001"; when "010" => q<=minseg1; sel<="010"; when "011" => q<=minseg2; sel<="011"; when "100" => q<=hourseg1; sel<="100"; when "101" => q<=hourseg2; sel<="101"; when others => q<="11111111";sel<="111"; end case; end process;

数字时钟设计-主程序 第十一章 ● --秒低位显示 second_counter1:process(sec_counter1) begin case sec_counter1 is when "0000" => secseg1<="10111111"; when "0001" => secseg1<="10000110"; when "0010" => secseg1<="11011011"; when "0011" => secseg1<="11001111"; when "0100" => secseg1<="11100110"; when "0101" => secseg1<="11101101"; when "0110" => secseg1<="11111101"; when "0111" => secseg1<="10000111"; when "1000" => secseg1<="11111111"; when "1001" => secseg1<="11101111"; when others => secseg1<="11111111"; end case; end process second_counter1;

数字时钟设计-主程序 第十一章 ● --秒高位显示 second_counter2:process(sec_counter2) begin case sec_counter2 is when "0000" => secseg2<="00111111"; when "0001" => secseg2<="00000110"; when "0010" => secseg2<="01011011"; when "0011" => secseg2<="01001111"; when "0100" => secseg2<="01100110"; when "0101" => secseg2<="01101101"; when others => secseg2<="01111111"; end case; end process second_counter2;

数字时钟设计-主程序 第十一章 ● --分低位显示 minute_counter1:process(min_counter1) begin case min_counter1 is when "0000" => minseg1<="10111111"; when "0001" => minseg1<="10000110"; when "0010" => minseg1<="11011011"; when "0011" => minseg1<="11001111"; when "0100" => minseg1<="11100110"; when "0101" => minseg1<="11101101"; when "0110" => minseg1<="11111101"; when "0111" => minseg1<="10000111"; when "1000" => minseg1<="11111111"; when "1001" => minseg1<="11101111"; when others => minseg1<="11111111"; end case; end process minute_counter1;

数字时钟设计-主程序 第十一章 ● --分高位显示 minute_counter2:process(min_counter2) begin case min_counter2 is when "0000" => minseg2<="00111111"; when "0001" => minseg2<="00000110"; when "0010" => minseg2<="01011011"; when "0011" => minseg2<="01001111"; when "0100" => minseg2<="01100110"; when "0101" => minseg2<="01101101"; when others => minseg2<="01111111"; end case; end process minute_counter2;

数字时钟设计-主程序 第十一章 ● --小时低位显示 hor_counter1:process(hour_counter1) begin case hour_counter1 is when "0000" => hourseg1<="10111111"; when "0001" => hourseg1<="10000110"; when "0010" => hourseg1<="11011011"; when "0011" => hourseg1<="11001111"; when "0100" => hourseg1<="11100110"; when "0101" => hourseg1<="11101101"; when "0110" => hourseg1<="11111101"; when "0111" => hourseg1<="10000111"; when "1000" => hourseg1<="11111111"; when "1001" => hourseg1<="11101111"; when others => hourseg1<="11111111"; end case; end process;

数字时钟设计-主程序 第十一章 --小时高位显示 hor_counter2:process(hour_counter2) begin ● --小时高位显示 hor_counter2:process(hour_counter2) begin case hour_counter2 is when "0000" => hourseg2<="00111111"; when "0001" => hourseg2<="00000110"; when "0010" => hourseg2<="01011011"; when others => hourseg2<="01111111"; end case; end process; end Behavioral;

数字时钟设计-仿真文件 第十一章 ● LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.all; USE ieee.numeric_std.ALL; ENTITY test_clock_vhd IS END test_clock_vhd; ARCHITECTURE behavior OF test_clock_vhd IS -- Component Declaration for the Unit Under Test (UUT) COMPONENT clock PORT( clk : IN std_logic; rst : IN std_logic; inc_min : IN std_logic; sub_min : IN std_logic; inc_hour : IN std_logic; sub_hour : IN std_logic; sel : OUT std_logic_vector(2 downto 0); q : OUT std_logic_vector(7 downto 0) ); END COMPONENT;

数字时钟设计-仿真文件 第十一章 ● --Inputs SIGNAL clk : std_logic := '0'; SIGNAL rst : std_logic := '0'; SIGNAL inc_min : std_logic := '0'; SIGNAL sub_min : std_logic := '0'; SIGNAL inc_hour : std_logic := '0'; SIGNAL sub_hour : std_logic := '0'; --Outputs SIGNAL sel : std_logic_vector(2 downto 0); SIGNAL q : std_logic_vector(7 downto 0);

数字时钟设计-仿真文件 第十一章 ● BEGIN -- Instantiate the Unit Under Test (UUT) uut: clock PORT MAP( clk => clk, rst => rst, inc_min => inc_min, sub_min => sub_min, inc_hour => inc_hour, sub_hour => sub_hour, sel => sel, q => q );

数字时钟设计-仿真文件 第十一章 ● --仿真测试输入波形 PROCESS BEGIN clk<='0'; wait for 10ns; clk<='1'; END PROCESS; rst<='0'; wait for 30ns; rst<='1'; wait for 1ms;

数字时钟设计-仿真文件 第十一章 ● --仿真测试输入波形 process begin inc_hour<='1'; sub_hour<='1'; inc_min<='1'; sub_min<='1'; wait for 100ns; inc_hour<='0'; inc_hour<='1'; sub_hour<='0'; sub_hour<='1'; inc_min<='0'; inc_min<='1'; sub_min<='0'; sub_min<='1'; wait for 1ms; end process; END;