Phân công nhiều hơn một nhiệm vụ cho một nhà nước (trong VỚI cáo)

O

Opel_Corsa

Guest
Trong đoạn code mẫu sau đây một máy nhà nước được định nghĩa:
Mã số:

kiến trúc RTL của mycode là

state_type loại là (I0, I1, I2, I3, I4, I5, I6);

tín hiệu y: state_type;

tín hiệu var_x, var_y: std_logic;

bắt đầu

quá trình (CLK, thiết lập lại)

bắt đầu

if (reset = '1 ') sau đó

var_x <= "0";

y <= I0;

elsif (clk'event và CLK = '1 ') sau đó

y là trường hợp

khi I1 => y <= I2;

khi I2 => y <= I3;

khi I3 => y <= I4;

khi I4 => y <= I5;

khi I5 => y <= I6;

khi những người khác => var_x <= "0";

y <= I1;

kết thúc vụ án;

nếu kết thúc;

kết thúc quá trình;với y chọn

<Outputscr = "00000000" khi I0,

"00111000" khi I1,

"00111000" khi I2,

"00001100" khi I3,

"00000001" khi I4,

"00000110" khi I5,

"10000000" khi I6;RTL kết thúc;
 
rất đơn giản của nó ..

Mã số:

kiến trúc RTL của mycode là

state_type loại là (I0, I1, I2, I3, I4, I5, I6);

tín hiệu y: state_type;

tín hiệu var_x, var_y: std_logic;

bắt đầu

quá trình (CLK, thiết lập lại)

bắt đầu

if (reset = '1 ') sau đó

var_x <= "0";

var_y <= "0";

y <= I0;

elsif (clk'event và CLK = '1 ') sau đó

y là trường hợp

khi I1 => y <= I2;

khi I2 => y <= I3;

khi I3 => y <= I4;

khi I4 => y <= I5;

khi I5 => y <= I6;

khi những người khác => - I0 là mặc định nhà nước

var_x <= '1 '; - đặt var_x

var_y <= "0"; - thiết lập lại var_y

y <= I1;

kết thúc vụ án;

nếu kết thúc;

kết thúc quá trình;với y chọn

<Outputscr = "00000000" khi I0,

"00111000" khi I1,

"00111000" khi I2,

"00001100" khi I3,

"00000001" khi I4,

"00000110" khi I5,

"10000000" khi I6;RTL kết thúc;

 
Cảm ơn bạn đã trả lời của bạn, nhưng đó không phải là những gì tôi đang tìm kiếm.Tôi đã tự hỏi nếu nó có thể làm điều gì đó như sau:

Mã số:

với y chọn

(Outputscr <= "00000000", var_x <= '1 ', var_y <= "0") khi I0,

"00111000" khi I1,

"00111000" khi I2,

"00001100" khi I3,

"00000001" khi I4,

"00000110" khi I5,

"10000000" khi I6;
 
Đây là một trong nhiều cách để làm điều đó nhưng điều này sẽ tạo ra chốt cho var_x và var_y!

Mã số:

kiến trúc dòng chảy của không rõ

tín hiệu outputscr_x_y: std_logic_vector (9 downto 0);

bắt đầu

với y chọn

outputscr_x_y <= "00000000" & "1" & "0" khi I0,

"00111000" & var_x & var_y khi I1,

"00111000" & var_x & var_y khi I2,

"00001100" & var_x & var_y khi I3,

"00000001" & var_x & var_y khi I4,

"00000110" & var_x var_y & khi I5,

"10000000" & var_x & var_y khi I6;outputscr <= outputscr_x_y (9 downto 2);

var_x <= outputscr_x_y (1);

var_y <= outputscr_x_y (0);
 
Hi,

bạn có thể gán giá trị cho chỉ có một tín hiệu bằng cách sử dụng "với ... chọn" tuyên bố.Khi bạn muốn kích hoạt nhiều hơn một tín hiệu trong một tiểu bang, bạn sẽ phải sử dụng riêng biệt "với ... chọn" báo cáo cho mỗi tín hiệu.Các tín hiệu này sẽ được cập nhật đồng thời và do đó bạn có thể thực hiện nhiều nhiệm vụ trong một nhà nước bằng cách sử dụng "với .... chọn" tuyên bố.

Good Luck !!!!!

 
Cảm ơn!Đó là rất thông minh, nand_gates.Vì vậy, bây giờ tôi nhận ra rằng nó không thể làm những gì tôi đang tìm kiếm (như xstal đã đề cập) khác hơn bằng cách tinh chỉnh các thiết kế của bit một.

 
Hi.Theo thảo luận trong thread khác (Nếu-Sau đó VHDL lỗi), có một cách khác để làm điều này.

Mã số:kiến trúc RTL của mycode là

state_type loại là (I0, I1, I2, I3, I4, I5, I6);

tín hiệu curr_state, next_state: state_type;

tín hiệu var_x, var_y: std_logic;

bắt đầu

- Quá trình đồng bộ máy nhà nước

quá trình (CLK, thiết lập lại)

bắt đầu

if (reset = '1 ') sau đó

curr_state <= I0;

elsif (clk'event và CLK = '1 ') sau đó

curr_state <= next_state;

nếu kết thúc;

kết thúc quá trình;- Quá trình tổ hợp máy nhà nước

curr_state quá trình () là

bắt đầu

- Mặc định giá trị đầu ra

var_x <= "0";

var_y <= '1 ';

<Outputscr = "00000000";

- Giải mã của nhà nước và đầu ra

curr_state là trường hợp

khi I0 =>

next_state <= I1; - giải mã tiếp theo tiểu bang

var_x <= '1 '; - giao kết quả đầu ra

var_y <= "0";

khi I1 =>

next_state <= I2;

<Outputscr = "00111000";

khi I2 =>

next_state <= I3;

<Outputscr = "00111000";

khi I3 =>

next_state <= I4;

<Outputscr = "00001100";

khi I4 =>

next_state <= I5;

<Outputscr = "00000001";

khi I5 =>

next_state <= I5;

<Outputscr = "00000110";

khi I6 =>

next_state <= I6;

<Outputscr = "10000000";

- Mặc định chuyển tiếp

khi những người khác =>

next_state <= I0;

kết thúc vụ án;

kết thúc quá trình;RTL kết thúc;

 

Welcome to EDABoard.com

Sponsor

Back
Top