当前位置:   article > 正文

FPGA应用实验设计(一)_四舍五入判别电路 fpga

四舍五入判别电路 fpga

一、实验目的

1、熟悉Quartus的使用。
2、掌握用VHDL语言和FPGA进行组合逻辑电路的设计方法。

二、实验要求

1、用VHDL设计一个四舍五入判别电路,其输入为8421BCD码,要求当输入大于或等于5时,判别电路输出为1;反之为0。
2、用VHDL设计3个开关控制一盏灯的逻辑电路,要求当开关都断开时,灯灭;任一开关闭合或断开,灯的状态变换一次。
3、用VHDL设计一个4选1数据选择器,信号A、B、D3、D2、D1、Do、Y、S。要求S=“0”时,根据A、B的状态mi选择输出端Y=Di。
4、用VHDL设计一个3线-8线译码器,信号A、B、C、Y7、Y6、Y5、Y4、Y3、Y2、Y1、Yo、S。要求S=“0”时,根据A、B、C的状态mi选择输出端Yi=“0”。

三、实验结果及代码

1、四舍五入判别电路

1.1 实验设计
本实验中要求设计四舍五入判别电路,在VHDL代码中采用if语句达到实验目的。其中以数字五为判别条件,其二进制为0101,当时钟信号clk =’1’时,若输入小于0101,则输出为0,若输入大等于0101,则输出为1。
实验中,当时钟信号clk=’1’时,输出Y发生变化,且当输入X小于”0101”时,输出Y=’0’;当输入X大于等于”0101”时,输出Y=’1’
1.2实验代码

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity circuit is
port(
    	  	X : IN std_logic_vector(3 DOWNTO 0);
			CLK:IN std_logic;
			Y : OUT std_logic);
end circuit;

architecture A of circuit is
			begin
				process (X,CLK)
				begin 
					if  X < "0101" and clk='1' then
						Y <= '0';
					elsif X >= "0101" and clk='1' then
						Y <= '1';
					end if;
				end process;
end A;

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

仿真代码(init及always进程)

init : PROCESS                                    
BEGIN 
		X <= "0000";
		wait for 200 ns;
		X <= "0001";
		wait for 200 ns;
		X <= "0010";
		wait for 200 ns;
		X <= "0011";
		wait for 200 ns;
		X <= "0100";
		wait for 200 ns; 
		X <= "0101";
		wait for 200 ns; 
		X <= "0110";
		wait for 200 ns;
		X <= "0111";
		wait for 200 ns; 
		X <= "1000";
		wait for 200 ns;  
		X <= "1001";
		wait for 200 ns; 		
		X <= "1010";
		wait for 200 ns;
		X <= "1011";
		wait for 200 ns;
		X <= "1100";
		wait for 200 ns; 
		X <= "1101";
		wait for 200 ns; 
		X <= "1110";
		wait for 200 ns;
		X <= "1111";
		wait for 200 ns;  		                     
WAIT;                                                       
END PROCESS init;                                           
always : PROCESS                                             
BEGIN
		clk <= '1';
		wait for 100 ns;
		clk <= '0';
		wait for 100 ns;  
END PROCESS always;                                          
E
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/821365
推荐阅读
相关标签
  

闽ICP备14008679号