Advertisement
domints

Weird FPGA behavior

Nov 16th, 2019
513
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 3.23 KB | None | 0 0
  1. -- Main.vhd
  2. library IEEE;
  3. use IEEE.STD_LOGIC_1164.ALL;
  4.  
  5. entity Main is
  6.     Port(
  7.         BCDInput : in STD_LOGIC_VECTOR(3 downto 0);
  8.         SevenSegment : out STD_LOGIC_VECTOR(6 downto 0);
  9.         SevenSegmentEnable : out STD_LOGIC_VECTOR(2 downto 0)
  10.     );
  11. end Main;
  12.  
  13. architecture Behavioral of Main is
  14. component bcd_7segment is
  15. Port (
  16.     BCDin : in STD_LOGIC_VECTOR (3 downto 0);
  17.     Seven_Segment : out STD_LOGIC_VECTOR (6 downto 0)
  18. );
  19. end component;
  20. begin
  21. bcd_to_7seg: bcd_7segment port map (BCDInput, SevenSegment);
  22. SevenSegmentEnable(0) <= '1'; -- I also tried setting it all at once with "101" and with pre-defined signal, also tried setting only one. Both enable pins and 7Seg pins are active low.
  23. SevenSegmentEnable(1) <= '0';
  24. SevenSegmentEnable(2) <= '1';
  25. end Behavioral;
  26.  
  27. -- BCD_To_7Seg.vhd - I don't think it matters, but just for sure...
  28. library IEEE;
  29. use IEEE.STD_LOGIC_1164.ALL;
  30.  
  31. entity bcd_7segment is
  32. Port (
  33.     BCDin : in STD_LOGIC_VECTOR (3 downto 0);
  34.     Seven_Segment : out STD_LOGIC_VECTOR (6 downto 0)
  35. );
  36. end bcd_7segment;
  37.  
  38. architecture Behavioral of bcd_7segment is
  39.  
  40. begin
  41.  
  42. process(BCDin)
  43. begin
  44.  
  45. case BCDin is
  46. when "0000" =>
  47. Seven_Segment <= "0000001"; ---0
  48. when "0001" =>
  49. Seven_Segment <= "1001111"; ---1
  50. when "0010" =>
  51. Seven_Segment <= "0010010"; ---2
  52. when "0011" =>
  53. Seven_Segment <= "0000110"; ---3
  54. when "0100" =>
  55. Seven_Segment <= "1001100"; ---4
  56. when "0101" =>
  57. Seven_Segment <= "0100100"; ---5
  58. when "0110" =>
  59. Seven_Segment <= "0100000"; ---6
  60. when "0111" =>
  61. Seven_Segment <= "0001111"; ---7
  62. when "1000" =>
  63. Seven_Segment <= "0000000"; ---8
  64. when "1001" =>
  65. Seven_Segment <= "0000100"; ---9
  66. when others =>
  67. Seven_Segment <= "1111111"; ---null
  68. end case;
  69.  
  70. end process;
  71.  
  72. end Behavioral;
  73.  
  74. -- Main.ucf
  75. CONFIG VCCAUX = "3.3" ;
  76.  
  77. NET "SevenSegmentEnable[2]"           LOC = B3  | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
  78. NET "SevenSegmentEnable[1]"           LOC = A2  | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
  79. NET "SevenSegmentEnable[0]"           LOC = B2  | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
  80.  
  81. NET "SevenSegment[0]"     LOC = A5  | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
  82. NET "SevenSegment[1]"     LOC = C6  | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
  83. NET "SevenSegment[2]"     LOC = D6  | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
  84. NET "SevenSegment[3]"     LOC = C5  | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
  85. NET "SevenSegment[4]"     LOC = C4  | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
  86. NET "SevenSegment[5]"     LOC = A4  | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
  87. NET "SevenSegment[6]"     LOC = B4  | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
  88.  
  89. NET "BCDInput[0]"         LOC = C17  | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST | PULLUP;
  90. NET "BCDInput[1]"         LOC = C18  | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST | PULLUP;
  91. NET "BCDInput[2]"         LOC = D17  | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST | PULLUP;
  92. NET "BCDInput[3]"         LOC = D18  | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST | PULLUP;
  93.  
  94. -- Board: https://numato.com/product/mimas-v2-spartan-6-fpga-development-board-with-ddr-sdram
  95. -- Schematic: https://numato.com/blog/wp-content/uploads/2016/08/MimasV2Sch.pdf
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement