Mơ hình thời gian theo các sự kiện rời rạc

Một phần của tài liệu TIẾP CẬN CÔNG NGHỆ FPGA (Trang 55 - 58)

II. Giới thiệu môi trường lập trình ISE.

CHƯƠNG IV: NGÔN NGỮ VHDL 4.1 Giới thiệu chung về ngôn ngữ VHDL

4.1.3. Mơ hình thời gian theo các sự kiện rời rạc

Khi chức năng hoạt động và cấu trúc của khối đã được chỉ định rõ, thì người ta có thể mơ phỏng khối bằng cách kích hoạt theo mơ tả hoạt động của nó. Điều này có thể thực hiện được bằng cách mơ phỏng q trình hoạt động đã được rời rạc thành các bước theo thời gian. Tại một vài thời điểm mô phỏng, khối đầu vào được kích hoạt bằng cách theo đổi giá trị trên cổng đầu vào. Khối này phản ứng lại bằng cách thực hiện mã lệnh theo mơ tả hoạt động của nó đã được gán và tạo ra các giá trị mới đưa đến đường tín hiệu để đưa đến các cổng đầu ra của nó tại các thời điểm mơ phỏng tiếp theo sau. Việc này được gọi là kế hoạch giao tác (scheluding a

transaction) trên tín hiệu đó. Nếu giá trị mới khác giá trị trước đó đã có trên đường

tín hiệu, thì sẽ có một sự kiện (event) xảy ra, và các khối khác với các đầu vào đã

được kết nối với đường tín hiệu đó có thể sẽ được kích hoạt.

Q trình mơ phỏng bắt đầu với một pha được gọi là pha khởi động (initilation

phase), và sau đó các q trình được thực hiện lặp lại hai giai đoạn trong một chu

kỳ mô phỏng (simulation cycle). Trong pha khởi động, tất cả các tín hiệu được cung cấp sẵn các giá trị khởi động, thời gian mô phỏng được đưa về 0, và mỗi một

Trong giai đoạn đầu tiên của chu kỳ mô phỏng, thời gian mô phỏng được nâng lên thành thời gian sớm nhất tại thời điểm mà giao tác đã được thực hiện. Tất cả các giao tác được đưa vào tại thời điểm này đều được kích hoạt, và điều này có thể gây ra một số sự kiện nào đó.

Trong gian đoạn thứ hai của chu kỳ mô phỏng, tất cả các khối mà phản ứng lại

đối với các sự kiện vừa xảy ra trong giai đoạn một sẽ kích hoạt chương trình hoạt động của chúng. Các chương trình đó thường là kế hoạch giao tác trên các tín hiệu đầu ra của chúng. Khi tất cả các chương trình kết thúc hoạt động, chu kỳ mô phỏng được lặp lại. Nếu khơng có thêm giao tác nào thì q trình mơ phỏng đã hồn thành.

Mục đích của việc mơ phỏng là để biết thêm thông tin về sự thay đổi trong hệ thống tại từng thời điểm. Việc này có thể thực hiện được giám sát bởi chương trình kiểm sốt mơ phỏng (simulation monitor). Chương trình này nhằm mục đích ghi lại q trình hoạt động theo từng thời điểm tại các điểm để dùng vào việc phân tích về sau.

4.1.4. Ví dụ

Chúng ta có một bộ đếm hai bit COUNT như trong hình vẽ 4.2, gồm có 3 khối: 2 khối T_FLIPFLOP và một khối INVERTER. Bộ đếm này có 2 đầu ra là q1 và q0, một đầu vào là clock.

Hình 4.2. Sơ đồ bộ đếm COUNT Dùng ngôn ngữ VHDL để định nghĩa bộ đếm này như sau:

entity count2 is

generic (prop_delay : Time := 10 ns); port (clock : in bit; q1, q0 : out bit); end count2;

Nhìn vào đoạn chương trình trên chúng ta thấy bộ đếm COUNT đã được định nghĩa với một cổng vào clock và hai cổng ra q1, q0 đều thiết lập theo các giá trị bit. Hằng số prop_delay được sử dụng đề điều khiển hoạt động của COUNT với thời gian đếm sẽ là 10 ns một lần. Trên đây mới chỉ là định nghĩa bộ đếm, còn hoạt động của bộ đếm này sẽ được viết theo hai cách.

Cách thứ nhất là viết theo hoạt động của bộ đếm:

architecture behaviour of count2 is begin

count_up: process (clock)

variable count_value : natural := 0; begin

if clock = '1' then

count_value := (count_value + 1) mod 4;

q0 <= bit'val(count_value mod 2) after prop_delay;

q1 <= bit'val(count_value / 2) after prop_delay;

end if;

end process count_up; end behaviour;

Có thể viết lại hoạt động dựa theo thành phần các khối trong bộ đếm và đường tín hiệu như sau:

architecture structure of count2 is component t_flipflop

port (ck : in bit; q : out bit); end component;

port (a : in bit; y : out bit); end component;

signal ff0, ff1, inv_ff0 : bit; begin

bit_0 : t_flipflop port map (ck => clock, q => ff0); inv : inverter port map (a => ff0, y => inv_ff0); bit_1 : t_flipflop port map (ck => inv_ff0, q => ff1); q0 <= ff0;

q1 <= ff1;

end structure;

Một phần của tài liệu TIẾP CẬN CÔNG NGHỆ FPGA (Trang 55 - 58)

Tải bản đầy đủ (PDF)

(198 trang)