




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、-目录1.秒表设计要求12.设计思路12.1功能模块12.1.1分频器12.1.2计数器12.1.3数据锁存器12.1.4控制器12.1.5扫描显示的控制电路22.1.6显示电路32.1.7按键消抖电路33.电路实现44.程序仿真104.1分频器104.1.1计数器电路综合114.1.2计数器电路仿真114.2同步计数器134.2.1计数器实现134.2.2计数器仿真154.2.3同步计数器电路综合174.3按键消抖电路184.3.1按键消抖电路实现184.3.2按键消抖电路仿真184.3.3按键消抖电路综合204.4八段译码器204.4.1八段译码器实现204.4.2八段译码器仿真214.4
2、.3八段译码器电路综合224.5控制器234.5.1控制器234.5.1控制器仿真244.5.3控制器电路综合255.2View Technology Schematic :265.3管脚锁定:276.实验结论27. z-1.秒表设计要求(1) 秒表的计时围为00:00:00 59:59:99。(2) 两个按钮开关Start/Stop和Split/Reset,控制秒表的启动、停顿、分段和复位:在秒表已经被复位的情况下,按下“Start/Stop键,秒表开场计时。在秒表正常运行的情况下,如果按下“Start/Stop键,则秒表暂停计时;再次按下该键,秒表继续计时。在秒表正常运行的情况下,如果按下
3、“Split/Reset键,显示停顿在按键时的时间,但秒表仍然在计时;再次按下该键,秒表恢复正常显示。在秒表暂停计时的情况下,按下“Split/Reset键,秒表复位归零。2.设计思路2.1功能模块2.1.1分频器对晶体振荡器产生的时钟信号进展分频,产生时间基准信号2.1.2计数器对时间基准脉冲进展计数,完成计时功能2.1.3数据锁存器锁存数据使显示保持暂停2.1.4控制器通过产生锁存器的使能信号来控制计数器的运行、停顿以及复位设计分析:2.1.5扫描显示的控制电路 包括扫描计数器、数据选择器和7段译码器,控制8个数码管以扫描方式显 示计时结果,原理图如下:实验电路板上的按键2.1.6显示电路
4、2.1.7按键消抖电路消除按键输入信号抖动的影响,输出单脉冲实验板上的数码管为共阳LED数码管按键按下时,FPGA的输入为低电平;松开按键时,FPGA的输入为高电平但是在按下按键和松开按键的瞬间会出现抖动现象2.2电路框图3.电路实现- pany: - Engineer: - - Create Date: 09:08:39 03/12/2021 - Design Name: - Module Name: stopwatch_1 - Behavioral - Project Name: - Target Devices: - Tool versions: - Description: - Dep
5、endencies: - Revision: - Revision 0.01 - File Created- Additional ments: -library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;- Unment the following library declaration if instantiating- any *ilin* primitives in this code.-library UNISIM;-use UNISIM.
6、Vponents.all;entity stopwatch_1 isPort (Clk : in STD_LOGIC;start_stop : in STD_LOGIC;split_reset : in STD_LOGIC;ncs : out STD_LOGIC;s : out STD_LOGIC_VECTOR(2 downto 0);seg : out STD_LOGIC_VECTOR (7 downto 0);end stopwatch_1;architecture Behavioral of stopwatch_1 issignal k1,k2,k3,k4: STD_LOGIC;sign
7、alt_1,t_2 : STD_LOGIC_VECTOR(1 downto 0);signal start_stop_out,split_reset_out: STD_LOGIC;signal count: STD_LOGIC_VECTOR(15 downto 0):=(others=>'0');signal clk_1k: STD_LOGIC;signal z0,z1,z2,z3,z4,z5,z6,q1,q2,q3,q4,q5,q6 : STD_LOGIC_VECTOR(3 downto 0):=(others=>'0');signal count
8、_2: STD_LOGIC_VECTOR(2 downto 0 ):=(others=>'0');signal in_7: STD_LOGIC_VECTOR(3 downto 0);signal sreg: STD_LOGIC_VECTOR(2 downto 0):="111"signal sne*t: STD_LOGIC_VECTOR(2 downto 0);Begin-为三八译码器置入使能信号 ncs <= '0'-分频电路process(clk)beginif rising_edge(clk) thenif count =
9、47999 thencount <=(others=>'0');elsecount <= count+1;end if;end if;end process;clk_1k <= count(15);-同步计数电路process(clk_1k,sreg(2)beginif rising_edge(clk_1k) thenif sreg(2) = '1' then z0<=(others=>'0');z1<=(others=>'0');z2<=(others=>'0&
10、#39;);z3<=(others=>'0');z4<=(others=>'0');z5<=(others=>'0');z6<=(others=>'0');elsif sreg(1) = '1' thenz0 <= z0+1;if z0 = 9 thenz0 <=(others=>'0');z1 <= z1+1;if z1 = 9 thenz1 <=(others=>'0');z2 <= z2+
11、1;if z2 = 9 thenz2 <=(others=>'0');z3 <= z3+1;if z3 = 9 thenz3 <= (others=>'0');z4 <= z4+1;if z4 = 5 thenz4 <= (others=>'0');z5 <= z5+1;if z5 = 9 thenz5 <= (others=>'0');z6 <= z6+1;if z6 = 5 thenz6 <= (others=>'0');end
12、 if;end if;end if;end if;end if;end if;end if;end if;end if;end process;-扫描计数器process(clk_1k)beginif rising_edge(clk_1k) thencount_2 <= count_2+1;end if;end process;s <= count_2;-锁存器process(sreg(0),z1,z2,z3,z4,z5,z6)beginif sreg(0) = '1' thenq1 <= z1;q2 <= z2;q3 <= z3;q4 <=
13、 z4;q5 <= z5;q6 <= z6;end if;end process;-process(count_2,q1,q2,q3,q4,q5,q6)begincase count_2 iswhen "000" => in_7 <= q1;when "001" => in_7 <= q2;when "011" => in_7 <= q3;when "100" => in_7 <= q4;when "110" => in_7 &l
14、t;= q5;when "111" => in_7 <= q6;when others => in_7 <= "1111" end case;end process;-八段译码器process(in_7)begincase in_7 iswhen "0000" => seg <="00000011"when "0001" => seg <="10011111"when "0010" => seg <
15、;="00100101"when "0011" => seg <="00001101"when "0100" => seg <="10011001"when "0101" => seg <="01001001"when "0110" => seg <="01000001"when "0111" => seg <="0001111
16、1"when "1000" => seg <="00000001"when "1001" => seg <="00001001"when others => seg <="11111101"end case;end process;-按键去抖电路process(clk_1k,start_stop)beginif clk_1k'event and clk_1k='0' thenift_1 = 3 thenk1 <=
17、9;1'elsek1 <= '0't_1 <=t_1+1;end if;k2 <= k1;end if;if start_stop = '0' thent_1 <= "00"end if;end process;start_stop_out <= not k1 and k2; process(clk_1k,split_reset)beginif clk_1k'event and clk_1k='0' thenift_2 = 3 thenk3 <= '1'els
18、ek3 <= '0't_2 <=t_2+1;end if;k4 <= k3;end if;if split_reset = '0' thent_2 <= "00"end if;end process;split_reset_out <= not k3 and k4;-控制器process(clk_1k,start_stop_out,split_reset_out)beginif rising_edge(clk_1k) thensreg <= sne*t;end if;end process;process(
19、start_stop_out,split_reset_out,sreg)begincase sreg iswhen "111" =>if start_stop_out = '1' and split_reset_out = '0' then sne*t <= "011"else sne*t <= sreg;end if; when "011" =>if start_stop_out = '1' and split_reset_out = '0' t
20、hen sne*t <= "001"elsif start_stop_out = '0' and split_reset_out = '1' then sne*t <= "010"else sne*t <= sreg;end if;when "001" =>if start_stop_out = '0' and split_reset_out = '1' then sne*t <= "111"elsif start_sto
21、p_out = '1' and split_reset_out = '0' then sne*t <= "011"else sne*t <= sreg;end if;when "010" =>if start_stop_out = '0' and split_reset_out = '1' then sne*t <= "011"else sne*t <= sreg;end if;when others =>sne*t <= &qu
22、ot;111"end case;end process;end Behavioral;注:控制器设计时,巧妙地将状态编码和控制器输出的控制信号编码合二为一,即状态编码也是控制信号编码,使得程序形式上更为简单、清晰。4.程序仿真4.1分频器entity fp is Port ( clk_48M : in STD_LOGIC; clk_1k : out STD_LOGIC);end fp;architecture Behavioral of fp issignal count: STD_LOGIC_VECTOR(15 downto 0):=(others=>'0')
23、;beginprocess(clk_48M)beginif rising_edge(clk_48M) thenif count = 47999 thencount <=(others=>'0');elsecount <= count+1;end if;end if;end process;clk_1k <= count(15);end Behavioral;tb : PROCESSBEGINclk_48M <= '1' wait for 10.4 ns;clk_48M <= '0' wait for 10.4
24、ns;END PROCESS;4.1.1计数器电路综合4.1.2计数器电路仿真由图可得分频后的信号周期T=999333718ps0.001s 即的到了1KHz的信号由图可得时钟信号周期T=20845ps20.845ns 即的到了48MHz的时钟信号4.2同步计数器4.2.1计数器实现entity count_6 is Port ( clk_1k : in STD_LOGIC; d1 : out STD_LOGIC_VECTOR(3 downto 0); d2 : outSTD_LOGIC_VECTOR(3 downto 0); d3 : out STD_LOGIC_VECTOR(3 downt
25、o 0); d4 : out STD_LOGIC_VECTOR(3 downto 0); d5 : out STD_LOGIC_VECTOR(3 downto 0); d6 : out STD_LOGIC_VECTOR(3 downto 0);end count_6;architecture Behavioral of count_6 issignal z0,z1,z2,z3,z4,z5,z6: STD_LOGIC_VECTOR(3 downto 0):=(others=>'0');signal clr,en: STD_LOGIC;Beginclr <= '
26、0'-清零无效en <= '1'-计数使能有效d1 <= z1;d2 <= z2;d3 <= z3;d4 <= z4;d5 <= z5;d6 <= z6;process(clk_1k,clr)beginif rising_edge(clk_1k) thenif clr = '1' then z0<=(others=>'0');z1<=(others=>'0');z2<=(others=>'0');z3<=(others=&g
27、t;'0');z4<=(others=>'0');z5<=(others=>'0');z6<=(others=>'0');elsif en = '1' thenz0 <= z0+1;if z0 = 9 thenz0 <=(others=>'0');z1 <= z1+1;if z1 = 9 thenz1 <=(others=>'0');z2 <= z2+1;if z2 = 9 thenz2 <=(oth
28、ers=>'0');z3 <= z3+1;if z3 = 9 thenz3 <= (others=>'0');z4 <= z4+1;if z4 = 5 thenz4 <= (others=>'0');z5 <= z5+1;if z5 = 9 thenz5 <= (others=>'0');z6 <= z6+1;if z6 = 5 thenz6 <= (others=>'0');end if;end if;end if;end if;end
29、 if;end if;end if;end if;end if;end process;end Behavioral;4.2.2计数器仿真tb: PROCESSBEGINclk_1k <= '0'wait for 0.5 ms;clk_1k <= '1'wait for 0.5 ms;END PROCESS;0.01s位由图可以看出为十进制0.1s位由图可以看出为十进制1s位由图可以看出为十进制10s位由图可以看出为六进制1min位由图可以看出为十进制10min位由图可以看出为六进制4.2.3同步计数器电路综合4.3按键消抖电路4.3.1按键消抖电路
30、实现entity quedou is Port ( clk_1k : in STD_LOGIC; key_in : in STD_LOGIC; key_out : out STD_LOGIC);end quedou;architecture Behavioral of quedou issignal k1,k2: STD_LOGIC;signalt_1: STD_LOGIC_VECTOR(1 downto 0);beginprocess(clk_1k,key_in)beginif clk_1k'event and clk_1k='0' thenift_1 = 3 the
31、nk1 <= '1'elsek1 <= '0't_1 <=t_1+1;end if;k2 <= k1;end if;if key_in = '0' thent_1 <= "00"end if;end process;key_out <= not k1 and k2;end Behavioral;4.3.2按键消抖电路仿真tb: PROCESSBEGINclk_1k <= '0'wait for 0.5 ms;clk_1k <= '1'wait fo
32、r 0.5 ms;END PROCESS;PROCESSBEGINkey_in <= '1'wait for 10 ms;key_in <= '0'wait for 0.1 ms;key_in <= '1'wait for 0.09 ms;key_in <= '0'wait for 0.1 ms;key_in <= '1'wait for 0.11 ms;key_in <= '0'wait for 0.12 ms;key_in <= '1'w
33、ait for 0.11 ms;key_in <= '0'wait for 0.12 ms;key_in <= '1'wait for 0.1 ms;key_in <= '0'wait for 0.11 ms;key_in <= '1'wait for 0.12 ms;key_in <= '0'wait for 0.1 ms;key_in <= '1'wait for 0.1 ms;key_in <= '0'wait for 10 ms;ke
34、y_in <= '1'wait for 0.09 ms;key_in <= '0'wait for 0.08 ms;key_in <= '1'wait for 0.1 ms;key_in <= '0'wait for 0.11 ms;key_in <= '1'wait for 0.09 ms;key_in <= '0'wait for 0.1 ms;key_in <= '1'wait for 0.11 ms;key_in <= '
35、;0'wait for 0.12 ms;key_in <= '1'wait for 0.1 ms;key_in <= '0'wait for 0.11 ms;key_in <= '1'wait for 0.12 ms;key_in <= '0'wait for 0.1 ms;key_in <= '1'wait for 10 ms;END PROCESS;4.3.3按键消抖电路综合4.4八段译码器4.4.1八段译码器实现entity baduan is Port ( in_7 :
36、 in STD_LOGIC_VECTOR (3 downto 0); seg : out STD_LOGIC_VECTOR (7 downto 0);end baduan;architecture Behavioral of baduan isbeginprocess(in_7)beginCase in_7 iswhen "0000" => seg <="00000011"when "0001" => seg <="10011111"when "0010" => s
37、eg <="00100101"when "0011" => seg <="00001101"when "0100" => seg <="10011001"when "0101" => seg <="01001001"when "0110" => seg <="01000001"when "0111" => seg <="0
38、0011111"when "1000" => seg <="00000001"when "1001" => seg <="00001001"when others => seg <="11111101"end case;end process;end Behavioral;4.4.2八段译码器仿真tb :PROCESSBEGINin_7 <= "0000" wait for 1 ms;in_7 <= "000
39、1" wait for 1 ms;in_7 <= "0010" wait for 1 ms;in_7 <= "0011" wait for 1 ms;in_7 <= "0100" wait for 1 ms;in_7 <= "0101" wait for 1 ms;in_7 <= "0110" wait for 1 ms;in_7 <= "0111" wait for 1 ms;in_7 <= "1000"
40、; wait for 1 ms;in_7 <= "1001" wait for 1 ms;in_7 <= "1010" wait for 1 ms;in_7 <= "0000" wait for 1 ms;END PROCESS;由图可见仿真结果与程序完全符合4.4.3八段译码器电路综合View Technology Schematic :4.5控制器4.5.1控制器entity kongzhiqi is Port ( clk_1k : in STD_LOGIC; start_stop_out : in STD_LO
41、GIC; split_reset_out : in STD_LOGIC; sreg_out : out STD_LOGIC_VECTOR (2 downto 0);end kongzhiqi;architecture Behavioral of kongzhiqi issignal sreg: STD_LOGIC_VECTOR(2 downto 0):="111"signal sne*t: STD_LOGIC_VECTOR(2 downto 0);beginprocess(clk_1k,start_stop_out,split_reset_out)beginif risin
42、g_edge(clk_1k) thensreg <= sne*t;end if;end process;process(start_stop_out,split_reset_out,sreg)begincase sreg iswhen "111" =>if start_stop_out = '1' and split_reset_out = '0' then sne*t <= "011"else sne*t <= sreg;end if; when "011" =>if s
43、tart_stop_out = '1' and split_reset_out = '0' then sne*t <= "001"elsif start_stop_out = '0' and split_reset_out = '1' then sne*t <= "010"else sne*t <= sreg;end if;when "001" =>if start_stop_out = '0' and split_reset_ou
44、t = '1' then sne*t <= "111"elsif start_stop_out = '1' and split_reset_out = '0' then sne*t <= "011"else sne*t <= sreg;end if;when "010" =>if start_stop_out = '0' and split_reset_out = '1' then sne*t <= "011"else sne*t <= sreg;end if;when others =>sne*t <= "111"end case;end process;sreg_out <= sreg ;end Behavioral;4.5.1控制器仿真tb: PROCESSBEGINclk_1k <= '0'wait for 0.5 ms;clk_1k <= '1'w
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025山煤国际井下操作技能人员招聘150人(山西)笔试参考题库附带答案详解
- 25年公司厂级员工安全培训考试试题新版
- 2024-2025新入职工安全培训考试试题答案A卷
- 2025简约式门面房屋租赁合同样本
- 2025融资租赁合同金融范本
- 2025授权融资合同范本
- 就业协议书失效
- 2025企业实习生合同
- 2025餐饮服务承包合同范本
- 2025装饰装潢工程承包合同
- 2025年装维智企工程师(三级)复习模拟100题及答案
- 国家管网集团西南管道昆明输油气分公司突发环境事件综合应急预案
- 停送电培训课件
- 医院培训课件:《核心制度-护理值班和交接班制度》
- 解题秘籍05 圆的综合问题(9种题型汇-总+专题训练)(解析版)-2025年中考数学重难点突破
- 无线网络施工方案
- 美学《形象设计》课件
- 江苏省建筑与装饰工程计价定额(2014)电子表格版
- 单片机病房呼叫系统设计
- 交通信号系统红绿灯安装专项施工方案
- DB14∕T 2024-2020 出口水果包装厂管理规范
评论
0/150
提交评论