数字系统设计实验报告 模十状态机与 7 段译码器显示 班 级: 学 号: 姓 名: 实验二 模十状态机与 7 段译码器显示 1 / 6 一、实验目的: 通过设计频率可选的模十状态机以及 7 段译码电路以进一步掌握 VHDL 硬件描述语言。 二、实验流程: 本设计有分频器、多路选择器、状态机和译码器。 1.时钟输入作为分频器的输入,输出时钟分别为 2 分频、4 分频、8 分频和 16 分频; 2.四个频率的时钟信号由 4 选 1 的多路选择器选择其中之一作为状态机的时钟输入; 3. 使 用 选 中 的 时 钟 频 率 作 为 输 入 驱 动 状 态 机 按 照 以 下 的 次 序 输 出 :0->2->5->6->1->9->4->8->7->3->0 的顺序输出; 4.使用此输出作为驱动输入到 7 段译码器的显示逻辑。 三、实验原理 1.分频器模块设计: 可选用计数器模块实现,如下所示: if( rst = ’0’ ) then count <=” 0000” elsif( clk’event and clk = ‘1’) then count <= count+1; end if; clk2 <= count(0); clk4 <= count(1); clk8 <= count(2); clk16 <= count(3); 2.多路选择器模块设计: 使用选择语句来实现: case sel is when “ 00” => clk <= clk2; when “ 01” => clk <= clk4; when “ 10” => clk <= clk8; when “ 11” => clk <= clk16; when others => null; end case; 3.状态机模块的实现: 选用 case 语句实现: process(clk1,rst,load) begin if(rst='0')then counts<="0000"; elsif(load='1')then counts<=countss; elsif( clk1'event and clk1 ='0') then case counts is when"0000"=>counts<="0010"; 2 / 6 w hen"0010"=>counts<="0101"; w hen"0101"=>counts<="0110"; w hen"0110"=>counts<="0001"; w hen"0001"=>counts<="1001"; w hen"1001"=>counts<="0100"; w hen"0100"=>counts<="1000"; w hen"1000"=>counts<="0111"; w hen"0111"=>counts<="0011"; w hen"0011"=>counts<="0000"; w hen others=>counts<="0000"; end case; end if; q_temp<=counts; end process; 4. 7 段译码器的显示逻辑的实现: 此程序为共阳极显示: process(q_temp) begin case q_temp is w hen"0000"=>seg<="1000000"; w hen"0001"=>seg<="1111001"; w hen"0010"=>seg<="0100...