Monday, August 11, 2008

get the system properties in matlab

For example, we have a state space system called "demo", in order to get the A, B, C, D matrices of that system, there are two ways:

1. get(demo, 'A'), get(demo, 'B')...get(demo,'D')
2. demo.A, demo.B, demo.C, demo.D

Tuesday, May 20, 2008

simulation when lpm_ram_dq is used

When lpm_ram_dq is used to create memory, the simulation provided by Quartus II doesn't work any more.

Monday, May 12, 2008

high impedance in vhdl

Although vhdl is case insensitive, when it comes to high impedance, "Z" must be used instead of "z".

Friday, May 9, 2008

microcomputer design

load: 1,3
-- load register 3 with the memory data whose address is stored in register 1.

store: 2,4
-- put the data stored in register 2 into the memory address stored in register 4.

brgtI: 1,7, 58
-- branch to memory 58 if data stored in register 1 is greater that register 7.

Wednesday, April 9, 2008

VHDL Notes

1) .acf: pin assignment and configuration file
2) .mif: memory initialization file

3) LPM Components

Altera MAX+PlusII contains a Library of Parameterized Modules(LPM) that allows implementation of devices such as RAM, ROM, arithmetic devices, etc. The size of the devices are parameterized. That is, the number of bits in the operands are specified at the time an instance of the component is made. In order to use these components, you must declare the LPM library(LIBRARY lpm;) and specify which package to use in this library(USE lpm.lpm_components.all;). The following example shows how to use a LPM add/subtract device to create a 32-bit add/subtract unit.

LPM Example

LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY lpm;
USE lpm.lpm_components.all;

ENTITY add_subt IS
PORT(a, b: IN std_logic_vector(31 downto 0);
a_s: IN std_logic;
answer: OUT std_logic_vector(31 downto 0));
END add_subt;
ARCHITECTURE struct OF add_subt IS
BEGIN
-- u1 is an arbitrary name of the instance
u1: lpm_add_sub -- This is the name of the component
GENERIC MAP(lpm_width => 32)
-- data, datab, add_sub, result are the formal parameter names
PORT MAP( dataa => a, datab => b, add_sub => a_s,
result => answer);
END struct;

A list of LPM components is available using HELP-> megafunctions/LPM in Altera MAX+PlusII.

Wednesday, March 12, 2008

Initial values of variables and signals in VHDL

Initial values when declaring a signal can only be used in simulation and will be ignored in synthesis.

Initial values when declaring a variable may be ignored in synthesis, as far as I know.

Tuesday, March 11, 2008

s domain transfer function to z domain

functions that are frequently used:
1.tf
2.poly & roots
3.c2d
4.zpk

Example:
>> sys=tf(0.1, poly([0 -0.1]))

Transfer function:
0.1
-----------
s^2 + 0.1 s

>> zsys=c2d(sys,1,'zoh')

Transfer function:
0.04837 z + 0.04679
----------------------
z^2 - 1.905 z + 0.9048

Sampling time: 1
>> zsys_zpk=zpk(zsys)

Zero/pole/gain:
0.048374 (z+0.9672)
-------------------
(z-1) (z-0.9048)

Sampling time: 1