VHDL coding
please visit www.fpgacoding.blogspot.in
Monday, 10 October 2016
Sunday, 5 June 2016
FPGA programming using System Generator
FPGA programming using System Generator
(LED Blinking)
(LED Blinking)
For programming the FPGA using system generator we required two software
1.MATLAB
2.Xilinx
step 1: Install both softwares
step 2: configured MATLAB for system generator
Step 3: after successful configuration, open MATLAB software,open simulink and you can see xilinx . blockset get added in simulink library.
Now you are ready for programming
- create new model file, file-new-model
- from xilinx blockset select and drag blocks from library to simulink program file and wired them all.
- double click on system generator block,
compilation: folder name "netlist" get created in project folder and stores converted hdl files
part: select the target FPGA device
check "create testbench", so that testbench file get generate. we can use this file to verify correctness of generated HDL code.
Clocking:
FPGA clock period: set it according to target FPGA board. my board support 100MHz. . frequency so time period becomes 10 ns
Clock pin Location: FPGA pin where 100MHZ frequency get generated (varies from board to . board)
- double click on counter block, select number of bits.
- double click slice block, this block is useful for selecting a particular bit/pin number. since the output of counter is 4 bit and I want to work on only MSB bit I made following selections.
for more clarification refer the clock divider circuit on my blog page. so if you want delay of 1 . second, make number of bits equals to 27 in counter block.
- gateway out: use to specify output pin of FPGA. in my case LED is connected to P15 pin .
- save the file.
- run the simulink model
- double click on scope block, if everything is correct then following window will pop up.
hence simulation is correct
- double click on system generator block
- click on generate
- go to your project file, there you will find folder "netlist"
- "netlist" folder contains all HDL files. open Xilinx ISE project file
- you can check the correctness of generated HDL file using testbench
- Double click on simulate behavioral model
Output of Testbench simulation.
- Double click on generate programming file, it will generate .bit format file / .bin format file, both are use for programming FPGA.
- double click on configure target device. Download .bit/.bin file into FPGA using iMPACT
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;
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;
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
Labels:
1 second delay in vhdl,
coding,
delay program vhdl,
fpga,
MIMAS V2 spartan 6 FPGA board,
MIMAS V2 spartan 6 FPGA board programming,
numato lab,
spartan 6,
vhdl,
vhdl coding,
vhdl counter,
vhdl fifo,
VHDL hardware program,
vhdl library,
vhdl multiplexer,
vhdl mux,
vhdl operator,
vhdl packages,
vhdl reserved words,
xilinx
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
Labels:
coding,
edge detection,
fpga,
image edge detection algorithm on FPGA,
image processing and FPGA,
image processing and vhdl,
spartan 6,
vhdl,
vhdl coding,
vhdl counter,
vhdl fifo,
vhdl library,
vhdl multiplexer,
vhdl mux,
vhdl operator,
vhdl packages,
vhdl reserved words,
xilinx
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:
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:
Labels:
coding,
fpga,
spartan 6,
vhdl,
VHDL code for register,
vhdl coding,
vhdl counter,
vhdl fifo,
vhdl half adder,
vhdl if else,
vhdl library,
vhdl multiplexer,
vhdl mux,
vhdl operator,
vhdl packages,
vhdl reserved words,
vhdl testbench,
xilinx
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;
Labels:
coding,
fpga,
spartan 6,
text file in out in vhdl,
vhdl,
vhdl adder,
vhdl alu,
vhdl coding,
vhdl counter,
vhdl datapath,
vhdl fifo,
vhdl library,
vhdl multiplexer,
vhdl mux,
vhdl operator,
vhdl packages,
vhdl reserved words,
vhdl ring counter,
vhdl subtractor,
xilinx
Subscribe to:
Posts (Atom)