Showing posts with label vhdl multiplexer. Show all posts
Showing posts with label vhdl multiplexer. Show all posts

Saturday, 28 February 2015

MIMAS V2 spartan-6 board, Design and implementation of delay module

Design and implementation of delay module on MIMAS V2 spartan-6 FPGA board



MIMAS V2 spartan-6 FPGA board has input clock frequency of 100 Mhz. using frequency divider
(100000000/2^27 )=0.745 Hz i.e 1.342 sec
Hence this VHDL code gives approximate 1 second delay

--Main Code--

entity DELAY1S is
    Port ( CLK,CLR : in  STD_LOGIC;
           CLK_OUT : OUT STD_LOGIC);
end DELAY1S;

architecture Behavioral of DELAY1S is
SIGNAL Q:STD_LOGIC_VECTOR( 27 DOWNTO 0 );
BEGIN
PROCESS (CLR, CLK)
BEGIN
IF CLR='1' THEN
Q<=X"0000000";
ELSIF CLK'EVENT AND CLK='1' THEN
Q<=Q+1;
END IF;
END PROCESS;
CLK_OUT<=Q(26);
end Behavioral;

--Test Bench--

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;

-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--USE ieee.numeric_std.ALL;

ENTITY test1 IS
END test1;

ARCHITECTURE behavior OF test1 IS

    -- Component Declaration for the Unit Under Test (UUT)

    COMPONENT DELAY1S
    PORT(
         CLK : IN  std_logic;
         CLR : IN  std_logic;
         CLK_OUT : OUT  std_logic
        );
    END COMPONENT;
   

   --Inputs
   signal CLK : std_logic := '0';
   signal CLR : std_logic := '0';

     --Outputs
   signal CLK_OUT : std_logic;

   -- Clock period definitions
   constant CLK_period : time := 10 ns;
--   constant CLK_OUT_period : time := 10 ns;

BEGIN

    -- Instantiate the Unit Under Test (UUT)
   uut: DELAY1S PORT MAP (
          CLK => CLK,
          CLR => CLR,
          CLK_OUT => CLK_OUT
        );

   -- Clock process definitions
   CLK_process :process
   begin
        CLK <= '0';
        wait for CLK_period/2;
        CLK <= '1';
        wait for CLK_period/2;
   end process;

--   CLK_OUT_process :process
--   begin
--        CLK_OUT <= '0';
--        wait for CLK_OUT_period/2;
--        CLK_OUT <= '1';
--        wait for CLK_OUT_period/2;
--   end process;
--

   -- Stimulus process
   stim_proc: process
   begin       
      -- hold reset state for 100 ns.
        
      wait for 100 ns;
clr<='1';
         wait for 100 ns;
clr<='0';
     

      wait;
   end process;

END;



Output waveform:




####UCF file####
#input clock frequency
NET "CLK" LOC = V10 | IOSTANDARD = LVCMOS33 | PERIOD = 100MHz;

# onBoard DIP SWITCHES
NET "CLR" LOC = "C17"  | IOSTANDARD = LVCMOS33  | DRIVE = 8  | SLEW = FAST | PULLUP;

# ON BOARD LEDS
NET "CLK_OUT" LOC = "T18"  | IOSTANDARD = LVCMOS33  | DRIVE = 8  | SLEW = FAST;




Download

Thursday, 25 December 2014

My Published Paper

My Published Papers

Paper Title: Design of Sobel operator based image edge detection algorithm on FPGA
Published by: IEEE
Abstract: Real-time image processing applications requires processing on large data of pixels in a given timing constraints. Reconfigurable device like FPGAs have emerged as promising solutions for reducing execution times by deploying parallelism techniques in image processing algorithms. Implementation of highly parallel system architecture, parallel access of large internal memory banks and optimization of processing element for applications makes FPGA an ideal device for image processing system. Edge detection is basic tool used in many image processing applications for extracting information from image. Sobel edge detection is gradient based edge detection method used to find edge pixels in image. This paper presents a design of a Sobel edge detection algorithm to find edge pixels in gray scale image. Xilinx ISE Design Suite-14 software platforms is used to design a algorithm using VHDL language. MATLAB software platform is used for obtaining pixel data matrix from gray scale image and vice versa. Xilinx FPGAs of family Vertex-5 are more suitable for image processing work than Spartan-3 and Spartan-6.

Link: http://ieeexplore.ieee.org/xpl/articleDetails.jsp?tp=&arnumber=6949951&queryText%3Dchaple

Paper Title: Image Edge Detection using Sobel Operator Based on FPGA
Published by: Elsevier Publication
Abstract: Image processing algorithm implemented in reconfigurable device like FPGA have
emerged as most viable solution for improving performance of image processing systems. On FPGA
highly parallel system architecture can be implemented to achieve real-time requirement of system
and processing element can be optimized for the application. Edge detection is a fundamental tool
used in image processing applications to extract information from image frames. Sobel edge detection
is method to find edge pixel in an image. This paper presents the design of gradient based edge
detection algorithm using Sobel operator on reconfigurable device FPGA. VHDL language is used to
developed edge detection algorithm. This paper focused on edge detection of gray scale image.

Link: http://www.elsevierst.com/conference_book_download_chapter.php?cbid=87#chapter34






 

Friday, 15 August 2014

Project Ideas

Project 1. FPGA based fast OMR (optical mask recognisation) sheet reader system

Description : OMR sheet is a paper with circle marks, one need to fill or darken the circles to select options. Mainly use to fill officials forms or to answer multiple choice questions. OMR sheets are use for fast and error less processing on user data.  FPGA is very powerful tool in real-time image processing. with FPGA it is possible to achieve processing on 30 OMR sheet per second.

System Requirements: 
a. Xilinx or Altera FPGA Board
b. Xilinx ISE or Altera quartus (Software development tool)
c. Camera (monochrome CMOS camera)
d. VGA monitor (Any PC monitor)

Project 2. FPGA based fast faulted product removal system ( example: removal of cracked soap from conveyor belt)

Description :  FPGAs have large number of input/output ports and hence can be very useful in automation system design. FPGA supports various industrial protocols and one can design his own protocol in FPGA.
By designing image edge detection system on FPGA, it is possible to detect cracks on Soap and then can be remove from conveyor belt. By using FPGA, processing on one image can be completed in 20 ms time and hence near about 20 sample of soap per second can be scan for defects.

System Requirements: 
a. Xilinx or Altera FPGA Board
b. Xilinx ISE or Altera quartus (Software development tool)
c. Camera (monochrome CMOS camera)
d. VGA monitor (Any PC monitor)


Project 3. FPGA based Robot control 

Description : FPGA based wireless control of robot system can be  used to for various application of military and industrial uses.

System Requirements: 
a. Xilinx or Altera FPGA Board
b. Xilinx ISE or Altera quartus (Software development tool)
c. Camera (monochrome CMOS camera)
d. zigbee wireless transmitter and receiver
  

Monday, 13 January 2014

VHDL code for register

--N-bit register with clear and load

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity reg is
generic(N : integer := 8);
port( load : in STD_LOGIC; a : in STD_LOGIC_VECTOR(N-1  downto 0);
clk : in STD_LOGIC; clr : in STD_LOGIC; b :out STD_LOGIC_VECTOR(N-1  downto 0));
end reg;

architecture reg of reg is
begin
process(clk, clr)
begin
if clr = '1' then
b <= (others=> '0');
elsif clk'event  and clk = '1' then
if load= '1' then
b<= a;
end if;
end if;
end process;
end reg;


output:

 

how to read content from text file and How to write content in text file in VHDL


--PROGRAM TO READ CONTENT FROM ONE FILE AND WRITE IT IN to ANOTHER FILE

--THIS PROGRAM HAS TO BE WRITTEN IN TESTBENCH MODULE

--INPUT AND OUTPUT text FILES SHOULD BE PRESENT IN YOUR PROJECT FOLDER

 

library ieee;

use ieee.std_logic_1164.all;

use STD.Textio.all;--PACKAGE CONTAIN FUNTIONS RELATED TO FILE READ/WRITE OPERATION

 

entity FA_TESTS is

end FA_TESTS;

architecture behavioral of FA_TESTS is

begin

 

process

file infile :text; --DEFINES INPUT FILE_HANDLE AND TYPE OF FILE

file outfile :text;--DEFINES INPUT FILE_HANDLE AND TYPE OF FILE

variable buff: line;--VARIABLE WITH TYPE LINE TO READ COMPLETE LINE/ROW AT A TIME

 

begin

file_open(infile,"gnc.txt",read_mode); --OPEN FILE NAME "GNC.TXT' TO READ CONTENT FROM THAT FILE

file_open(outfile,"gncc.txt", write_mode);--OPEN FILE NAME "GNCC.TXT" TO WRITE CONTENT TO THAT FILE

for i in 1 to 4 loop  --AS INPUT FILE "GNC.TXT" CONTAIN CONTENT OF 4 LINE

readline(infile, buff); --TO READ A LINE FROM INPUT FILE

writeline(outfile,buff);--TO WRITE A LINE TO OUTPUT FILE

end loop;

file_close(infile);--NECESSARY TO CLOSE OPEN FILE

file_close(outfile); --NECESSARY TO CLOSE OPEN FILE

wait;--TO HALT THE PROGRAM / TO AVOID INFINITE EXECUTION OF PROGRAM

end process;

 

end  behavioral;