




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程名称:VHDL数字系统设计与测试题 目 计数显示电路 学 院 电子工程学院 学 号 1202121273 姓 名 马泽伟 一 设计功能和要求要求:设计一个输出为3位BCD码的计数显示电路。该计数显示电路由三个模块构成:1、十进制计数器(BCD_CNT)2、七段显示译码器电路(DEC_LED)3、分时总线切换电路(SCAN)。该电路功能为通过对外部一信号脉冲进行计数,并以十进制进行计数,计到百位。同时利用数码管动态扫描原理进行三位数码管进行显示出来。二 设计思路整个设计分十进制计数器模块(BCD_CNT)、分时总线切换电路模块(SCAN)和七段显示译码器电路模块(DEC_LED)构成。总的输
2、入为十进制计数器时钟clk_1k,异步复位清零信号rst_n,分时总线切换电路时钟clk_1m。在rst信号为0期间,在每个clk的上升沿计数器将加1。在每个clk_1k的上升沿将会改变对三个数码管的扫描选通。总的输出为数码管选通信号sel(三位),输出到七段数码管的数据信号led(七位)。电路原理图如下:根据设计思路,设计详细的电路原理图如下:利用quartus进行综合生成RTL电路如下图:顶层模块逻辑结构图如下:顶层模块主要将十进制计数器、分时总线切换和七段显示译码模块进行连接搭建。其中从十进制模块中输出的data13:0、data23:0、data33:0分别为个、十、百位的BCD码。分
3、时总线切换的输出data3:0为其中要显示的一个BCD码和位选信号一一对应。1.十进制计数模块十进制模块输入输出IO口有计数时钟输入sysclk、系统复位端rst_b、BCD输出端data和进位端co。当计数时钟端来一脉冲时,data将会计数,当来10个脉冲时,data端将会清零,并且产生一个进位脉冲信号。如此将三个十进制模块通过进位端co进行级联,则可成为百位BCD计数器。2.分时总线切换这个模块时本设计的重点和难点,分时总线切换经过系统时钟进行分频得到扫描时钟,每当扫描时钟上升沿时,进行切换,使得当data_sel2:0=”011”,data3:0=data13:0,依次类推。3.七段显示
4、译码将data3:0的BCD码译码成为数码管显示码,采用共阴极.四:源代码设计1.顶层模块代码LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY declariation ENTITY display IS PORT ( Global system input sysclk : in STD_LOGIC; rst_b : in STD_LOGIC; tim_clk: in STD_LOGIC; Output ports data_sel : out STD_LOGIC_VECTOR
5、(2 DOWNTO 0); data_ out : out STD_LOGIC_VECTOR(6 DOWNTO 0) ); END ENTITY; Architecture declaritionARCHITECTURE code of display isSignal declarationSIGNAL data1,data2,data3 : STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL temp : STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL co1,co2 : STD_LOGIC;COMPONENT BCD_CNTCOMPONENT
6、BCD_CNT PORT ( Sysclk : IN STD_LOGIC; rst_b : IN STD_LOGIC; dataout: OUT STD_LOGIC_VECTOR (3 DOWNTO 0); co : OUT STD_LOGIC ); END COMPONENT;COMPONENT DEC_LEDCOMPONENT DEC_LED PORT ( data_in : IN STD_LOGIC_VECTOR(3 DOWNTO 0); data_out : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ); END COMPONENT;COMPONENT SCAN
7、COMPONENT SCAN PORT ( sysclk : IN STD_LOGIC; rst_b : IN STD_LOGIC; data1 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); data2 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); data3 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); data_out : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); data_sel : OUT STD_LOGIC_VECTOR(2 DOWNTO 0) ); END COMPONENT; BEG
8、IN U1: BCD_CNT PORT MAP (sysclk => tim_clk,rst_b => rst_b,dataout => data1,co => co1); U2: BCD_CNT PORT MAP (sysclk => co1 , rst_b => rst_b,dataout => data2,co => co2); U3: BCD_CNT PORT MAP (sysclk => co2 ,rst_b => rst_b,dataout => data3); U4: SCAN PORT MAP (sysclk =
9、> sysclk , rst_b => rst_b,data1 => data1, data2=>data2, data3 => data3, data_out => temp, data_sel => data_sel); U5: DEC_LED PORT MAP (data_in => temp, data_out => data_out); END code;1. 十进制模块该模块完成bcd码的计数过程,每当系统时钟的上升沿到来,计数器的低位加1,满10进位,依次类推完成计数功能,复位信号使计数器清零。源程序如下:LIBRARY IE
10、EE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;Entity declarationENTITY BCD_CNT IS PORT ( sysclk : IN STD_LOGIC; rst_b : IN STD_LOGIC; dataout: OUT STD_LOGIC_VECTOR (3 DOWNTO 0); co : OUT STD_LOGIC );END BCD_CNT;Architecture declarationARCHITECTURE cnt OF BCD_CNT ISSignal declartio
11、nSIGNAL temp : STD_LOGIC_VECTOR (3 DOWNTO 0); BEGIN PROCESS (sysclk,rst_b) BEGIN IF rst_b = '0' THEN temp <= "0000" ELSIF sysclk'event AND sysclk = '1' THEN IF temp = "1001" THEN temp <= "0000" ELSE temp <= temp + '1' END IF; END IF;
12、 END PROCESS; PROCESS(temp) BEGIN IF temp = "0000" THEN co <= '1' ELSE co <= '0' END IF; END PROCESS; dataout <= temp;END cnt;2.分时总线切换模块也即数码管刷新电路,其实质是一个在高频时钟控制下的多路数据选择器,在这里为三路数据选择器。源程序如下:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; En
13、tity declarationENTITY SCAN IS PORT ( Global input ports sysclk : IN STD_LOGIC; rst_b : IN STD_LOGIC; data1 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); data2 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); data3 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); Output ports data_out : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); data_sel : OUT ST
14、D_LOGIC_VECTOR(2 DOWNTO 0) ); END ENTITY; Architecture declarationARCHITECTURE code OF SCAN ISSignal declarationSIGNAL count : STD_LOGIC_VECTOR (3 DOWNTO 0);SIGNAL SEL_NUM : STD_LOGIC_VECTOR (1 DOWNTO 0);BEGIN PROCESS(sysclk,rst_b) BEGIN IF rst_b = '0' THEN count <= "0000" ; ELS
15、IF sysclk'event AND sysclk = '1' THEN count <= count + '1' END IF; END PROCESS; PROCESS (count,sysclk,rst_b) BEGIN IF rst_b = '0' OR SEL_NUM = "11" THEN SEL_NUM <= "00" ELSIF sysclk'event AND sysclk = '1' THEN IF count = "0000&qu
16、ot; THEN SEL_NUM <= SEL_NUM + '1' END IF; END IF; END PROCESS; PROCESS (SEL_NUM) BEGIN CASE SEL_NUM IS WHEN "00" => data_sel <= "011" WHEN "01" => data_sel <= "101" WHEN "10" => data_sel <= "110" WHEN OTHERS =&g
17、t; data_sel <= "111" END CASE; END PROCESS; PROCESS (SEL_NUM) BEGIN CASE SEL_NUM IS WHEN "00" => data_out <= DATA1; WHEN "01" => data_out <= DATA2; WHEN "10" => data_out <= DATA3; WHEN OTHERS => data_out <= "0000" END CASE;
18、 END PROCESS; END code; 3.七段显示译码电路模块根据七段数码管的显示原理,将bcd码译成为数码管所能显示的字符。源程序如下:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;Entity declaritionENTITY DEC_LED IS PORT ( data_in : IN STD_LOGIC_VECTOR(3 DOWNTO 0); data_out : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ); END ENTITY;Architecture declaritionArchitecture cod
19、e OF DEC_LED IS BEGIN PROCESS(data_in) BEGIN CASE data_in IS WHEN "0000" => data_out <= "1000000" WHEN "0001" => data_out <= "1111001" WHEN "0010" => data_out <= "0100100" WHEN "0011" => data_out <= "0
20、110000" WHEN "0100" => data_out <= "0011001" WHEN "0101" => data_out <= "0010010" WHEN "0110" => data_out <= "0000010" WHEN "0111" => data_out <= "1111000" WHEN "1000" => data_out <= "0000000" WHEN "1001" => data_out <= "0010000" WHEN OTHERS => data_out <= "1111111&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 临时软件测试员协议
- 中心静脉置管操作规范
- 阿坝师范学院《微信营销》2023-2024学年第二学期期末试卷
- 阿里市2025年高三高考考前适应性测试历史试题含解析
- 陈经纶中学2024-2025学年初三5月学情调研测试物理试题含解析
- 陕西机电职业技术学院《圣经与文学》2023-2024学年第二学期期末试卷
- 陕西电子信息职业技术学院《谈判策略与技巧》2023-2024学年第二学期期末试卷
- 陕西省咸阳市旬邑县2025届数学三下期末学业水平测试试题含解析
- 陕西省商洛中学2025届高三下学期网上周考(一)物理试题含解析
- 陕西省安康市2025届高考历史试题全真模拟卷(江苏专用)含解析
- 植物病虫害防治赛项赛题
- 数字经济学导论-全套课件
- 化学分析安全操作规程 标准版
- 风电机组齿轮箱故障分析报告
- PC构件吊装安全技术交底表
- 近5年高考理科数学试卷及答案解析(含2017-2021年全国卷共16套)
- 体育管理学体育管理的因素与环境
- 2022-2023年度中国家族财富可持续发展报告
- 羊水栓塞剧本
- 50MW光伏项目工程清单报价
- 足球场人工草坪改造方案
评论
0/150
提交评论