Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
state_classic.txt
Package: VHDL范例.rar [view]
Upload User: aptongtai
Upload Date: 2010-03-28
Package Size: 42k
Code Size: 3k
Category:
SCM
Development Platform:
C/C++
- -- Classic 2-Process State Machine and Test Bench
- -- MEALY TYPE STATE MACHINE EXAMPLE
- -- dowload from: www.fpga.com.cn & www.pld.com.cn
- library ieee;
- use ieee.std_logic_1164.all;
- ENTITY fsm IS
- PORT(clock,x : IN BIT; z : OUT BIT);
- END fsm;
- -------------------------------------------------
- ARCHITECTURE behaviour OF fsm IS
- TYPE state_type IS (s0,s1,s2,s3);
- SIGNAL present_state,next_state : state_type;
- BEGIN
- --state register process
- state_reg:PROCESS
- BEGIN
- WAIT UNTIL clock'EVENT AND clock = '1';
- present_state <= next_state;
- END PROCESS;
- --combinational logic feedback process
- fb_logic:PROCESS(present_state,x)
- BEGIN
- CASE present_state IS
- WHEN s0 =>
- IF x = '0' THEN z <= '0'; next_state <= s0;
- ELSE z <= '1'; next_state <= s2;
- END IF;
- WHEN s1 =>
- IF x = '0' THEN z <= '0'; next_state <= s0;
- ELSE z <= '0'; next_state <= s2;
- END IF;
- WHEN s2 =>
- IF x = '0' THEN z <= '1'; next_state <= s2;
- ELSE z <= '0'; next_state <= s3;
- END IF;
- WHEN s3 =>
- IF x = '0' THEN z <= '0'; next_state <= s3;
- ELSE z <= '1'; next_state <= s1;
- END IF;
- END CASE;
- END PROCESS;
- END behaviour;
- -----------------------------------------------------------
- --STIMULUS GENERATOR FOR FSM
- ENTITY fsm_stim IS
- PORT (clock,x: OUT BIT; z: IN BIT);
- END fsm_stim;
- ARCHITECTURE behavioural OF fsm_stim IS
- BEGIN
- --clock pulses : __--__--__--__--__--__
- --x input : _____------------_____
- --each '-' represents 5 ns.
- clock <= '0' AFTER 0 ns,
- '1' AFTER 10 ns, --clock 1
- '0' AFTER 20 ns,
- '1' AFTER 30 ns, --clock 2
- '0' AFTER 40 ns,
- '1' AFTER 50 ns, --clock 3
- '0' AFTER 60 ns,
- '1' AFTER 70 ns, --clock 4
- '0' AFTER 80 ns,
- '1' AFTER 90 ns, --clock 5
- '0' AFTER 100 ns;
- x <= '0' AFTER 0 ns,
- '1' AFTER 25 ns,
- '0' AFTER 85 ns;
- END behavioural;
- -----------------------------------------------
- ENTITY fsm_bench IS
- END fsm_bench;
- ARCHITECTURE structural OF fsm_bench IS
- COMPONENT fsm_stim PORT (clock,x: OUT BIT; z: IN BIT); END COMPONENT;
- COMPONENT fsm PORT (clock,x: IN BIT; z: OUT BIT); END COMPONENT;
- SIGNAL clock,x,z: BIT;
- BEGIN
- generator:fsm_stim PORT MAP(clock,x,z);
- circuit:fsm PORT MAP(clock,x,z);
- END structural;