This is a read-only archive of an earlier blog posting. Reasons for the change are at http://blog.sensicomm.com.
The permanent version of this post - with comments (if any) - is at
http://sensicomm.blogspot.com/2008/05/vhdl-helloworld.html
-- $Id: hello.vhd,v 1.1
2008/05/01 15:18:18 jrothwei Exp $
-- Joseph Rothweiler,
Sensicomm LLC Started 16Apr2008.
-- "Hello world"
program. Count down the clock, and display a binary
--
count on the 8 LED's.
------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL; --
Common things.
use IEEE.STD_LOGIC_ARITH.ALL; -- Makes
the "div+1" instruction work.
use
IEEE.STD_LOGIC_UNSIGNED.ALL;
entity main
is
Port (
CLK_50M : in STD_LOGIC; -- Input:
50 MHz clock.
LED : out STD_LOGIC_VECTOR (7 downto
0)
);
end main;
architecture Behavioral of main is
signal div:
STD_LOGIC_VECTOR(29 downto 0);
begin
process(CLK_50M) begin
if rising_edge(CLK_50M)
then
div <= div+1; -- Increment counter on every
clock.
LED <= div(29 downto 22); -- Display the
counter MSB's on the LED's.
end if; end process; end
Behavioral;
#
$Id: hello_3an.ucf,v 1.1 2008/05/01 15:23:01 jrothwei Exp $
# Joseph Rothweiler Sensicomm LLC started 01may2008.
# Settings for the Xilinx Spartan-3AN development board by
Digilent.
# This file just contains the parts I'm
using.
#################################################
#
Settings specific to this Board.
CONFIG VCCAUX = "3.3"
;
CONFIG ENABLE_SUSPEND = "FILTERED" ;
CONFIG
POST_CRC = "DISABLE" ;
#################################################
#
The main onboard clock, with the recommended settings.
NET "CLK_50M" LOC = "E12" | IOSTANDARD = LVCMOS33
| PERIOD = 20.000 ;
OFFSET = IN 10.000 VALID 20.000
BEFORE "CLK_50M" ;
OFFSET = OUT 20.000 AFTER "CLK_50M"
;
#################################################
#
The row of 8 LED's above the switches.
NET
"LED<0>" LOC = "R20" | IOSTANDARD = LVCMOS33 | DRIVE = 8 |
SLEW = SLOW ;
NET "LED<1>" LOC = "T19" |
IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW ;
NET
"LED<2>" LOC = "U20" | IOSTANDARD = LVCMOS33 | DRIVE = 8 |
SLEW = SLOW ;
NET "LED<3>" LOC = "U19" |
IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW ;
NET
"LED<4>" LOC = "V19" | IOSTANDARD = LVCMOS33 | DRIVE = 8 |
SLEW = SLOW ;
NET "LED<5>" LOC = "V20" |
IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW ;
NET
"LED<6>" LOC = "Y22" | IOSTANDARD = LVCMOS33 | DRIVE = 8 |
SLEW = SLOW ;
NET "LED<7>" LOC = "W21" |
IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW ;
To make or view comments, see the original post at
http://sensicomm.blogspot.com/2008/05/vhdl-helloworld.html