收藏 分销(赏)

北理工可编程逻辑器件实验报告.docx

上传人:Fis****915 文档编号:551846 上传时间:2023-12-06 格式:DOCX 页数:7 大小:181.76KB 下载积分:6 金币
下载 相关 举报
北理工可编程逻辑器件实验报告.docx_第1页
第1页 / 共7页
北理工可编程逻辑器件实验报告.docx_第2页
第2页 / 共7页


点击查看更多>>
资源描述
本科实验报告 实验名称: 可编程逻辑器件实验报告 课程名称: 可编程逻辑器件 实验时间: 任课教师: 实验地点: 实验教师: 实验类型: □ 原理验证 ■ 综合设计 □ 自主创新 学生姓名: 学号/班级: 组 号: 学 院: 同组搭档: 专 业: 成 绩: 9999计数器 一、实验目的 编程实现一个含清零功能9999计数器,并用7段数码管显示。 二、实验器材 EPM7128STC100-15,计算机 三、实验过程 (1)原理分析 a、分频 要实现一个0-9999计数器,并且肉眼可观,但是EPM7128STC100-15系统只有一个6M的时钟,频率太高,肉眼不可见,因此得用一个分频器将系统时钟降下来。本实验用了6个74LS190 BCD计数器级联,可实现1000000分频,从而将系统时钟变为6HZ。 b、计数 系统分频之后,接下来实现计数,仍然用74LS190 BCD计数器4个级联实现0~9999的计数功能,将每个计数器的管脚输出。 c、扫描 实验要求用4个7段数码管输出,计数输出是4个二进制数,因此本步骤的功能是将每个二进制数对应于一个7段数码管,再把单片机系统的时钟(6M Hz)作为扫描的时钟,从而实现4个7段数码管同步显示。 d、译码 计数输出的是0000~1001二进制形式的数,而7段数码管是a~b~c~d~e~f~g七段数码管,要实现这两个的连接,需要一个译码器,来将这四个数同步的显示在七段数码管上。 (2)程序及图形设计 a、分频和计数 图形设计如下: 画好上面的图以后编译后再将上面的设计为一整个芯片,如下图所示: b、扫描 代码: --******************************************** LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; --******************************************** ENTITY Scaner is PORT( rst : in std_logic; -- System RST clk : in std_logic; -- System Clock a,b,c,d : in std_logic_vector(3 downto 0); o_data : out std_logic_vector(3 downto 0); o_comm : out std_logic_vector(3 downto 0) -- disp bit ctrl ); END Scaner; --********************************************* architecture action of Scaner is type s_type is (LED0,LED1,LED2,LED3); signal s_LED : s_type; -- State Signal Declare begin process(clk,rst) begin if rst = '0' then o_comm <= "1111"; o_data <= "1111"; s_LED <= LED0; elsif clk'Event and clk = '1' then case s_LED is -- enter the state of LED when it begin when LED0 => o_comm <= "1110"; o_data <= d; s_LED <= LED1; when LED1 => o_comm <= "1101"; o_data <= c; s_LED <= LED2; when LED2 => o_comm <= "1011"; o_data <= b; s_LED <= LED3; when LED3 => o_comm <= "0111"; o_data <= a; s_LED <= LED0; when others => s_LED <= LED0; o_comm <= "1111"; end case; end if; end process; --///////////////////////////////////////////// end action; 同理,画好上面的图以后编译后再将上面的设计为一整个芯片,如下图所示: c、译码 源代码: --******************************************** LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; --******************************************** ENTITY encoder is PORT( i_data : in std_logic_vector(3 downto 0); -- System Data Bus(in) i_rst : in std_logic; -- System RST o_code : out std_logic_vector(7 downto 0) -- LED SEGCODE ); END encoder; --********************************************* architecture behavior of encoder is begin process (i_rst,i_data) begin if i_rst = '0' then --Reset State o_code <= "11111111"; else case i_data is when "0000" => o_code <= "00111111"; when "0001" => o_code <= "00000110"; when "0010" => o_code <= "01011011"; when "0011" => o_code <= "01001111"; when "0100" => o_code <= "01100110"; when "0101" => o_code <= "01101101"; when "0110" => o_code <= "01111101"; when "0111" => o_code <= "00000111"; when "1000" => o_code <= "01111111"; when "1001" => o_code <= "01101111"; when others => o_code <= "01111011"; end case; end if; end process; end behavior; 同理,画好上面的图以后编译后再将上面的设计为一整个芯片,如下图所示: (3)模块的连接 打开一个新的图形编辑窗口,用刚刚设计的芯片设计电路,如下图: (4)管脚的分配 将设计好的电路分配到单片机的管脚上,具体分配如下: 名称 管脚号 rst 89 clk 87 o_coad[0] 75 o_coad[1] 72 o_coad[2] 71 o_coad[3] 70 o_coad[4] 69 o_coad[5] 68 o_coad[6] 67 o_coad[7] 65 o_comm[0] 61 o_comm[1] 63 o_comm[2] 64 o_comm[3] 77 (5)烧程序 打开Quartus II Programmer ,选择pof文件打开,烧入单片机,具体界面如下图: 观察结果。 四、实验结果及问题分析 a、实验结果: 烧好板子之后,可以看到板子上的7段数码管从0开始计数。 b、问题分析: 第一次烧进之后板子开始计数,但是显示的数不是0~9依次计数,而是比较乱,并且现实的数不是0~9之间的某一个数,像是乱码,查看译码器之后确定译码器没有问题,各个对应的数都正确。 最后检查到计数器和扫描器之间的时候,发现计数器后面括号中是从小到大,也就是说MSB是最右边的一位,而扫描器括号中是从大到小,也就是说MSB是最左边的一位。意识到把计数的大小顺序弄错之后,再修改了之后,计数器正常运行。 五、心得体会 这学期本来就学VHDL语言,虽然软件用的不一样,但是语法结构是一样的。经过了系统的VHDL语言的学习,这门课的VHDL语言没有什么问题,而我从这门课学到最多的是怎么将软件语言和硬件联系到一起,将计算机语言烧录到单片机中的步骤和方法。学会了一门单片机的编程,烧录等一系列的步骤,学习其他的单片机就会容易的很多。 最后,感谢老师和师哥的教诲及帮助。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 行业资料 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服