T
tarang
Guest
hey guys u tôi hy vọng có thể giúp tôi ra ...tôi muốn thiết kế một giao thông đơn giản
ánh sáng điều khiển theo 4 tiểu bang thể hiện trong đoạn code dưới đây.của tôi
vấn đề chỉ là state_reg tín hiệu của tôi không thay đổi hình thức một
tiểu bang khác.điều này là bởi vì tôi truy cập bao gồm trong các
mã là một quá trình không hoạt động.màu xanh lá cây màu vàng để chờ đợi thời gian là 30 giây
và màu vàng thành màu đỏ là 5 giây.thời kỳ đồng hồ của tôi sẽ được 5 giây.do đó có thể
ai giúp tôi ra
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ----
thư viện ieee;
ieee.std_logic_1164.all sử dụng;
ieee.std_logic_arith.all sử dụng;
IEEE.std_logic_unsigned.all sử dụng;
TLC thực thể là
port (
CLK, đặt lại, sa, sb: in std_logic;
Ga, Ya, Ra, Gb, Yb, Rb: out std_logic
);
TLC kết thúc;
kiến trúc hành vi của TLC là
Loại state_type là (a, b, c, d);
tín hiệu state_reg, state_next: state_type;
tín hiệu Pre_Q, Q: std_logic_vector (3 downto 0);
tín hiệu số, rõ ràng: std_logic;
bắt đầu
- Mô tả các hành vi truy cập
quá trình (CLK, đếm, rõ ràng)
bắt đầu
nếu (rõ ràng = '0 ') sau đó
Pre_Q <= Pre_Q - Pre_Q;
elsif (CLK = '1 'và clk'event) sau đó
if (count = '1 ') sau đó
Pre_Q <= Pre_Q 1;
nếu kết thúc;
nếu kết thúc;
Hỏi <= Pre_Q;
kết thúc quá trình;- Nhà nước đăng kýquá trình (CLK, đặt lại)
bắt đầu
if (reset = '0 ') sau đó
state_reg <= a;
elsif (clk'event và CLK = '1 ') sau đó
state_reg <= state_next;
nếu kết thúc;
kết thúc quá trình;
- Tiếp theo nhà nước logic
quá trình (state_reg, Q, sa, sb)
bắt đầu
trường hợp là state_reg
khi một =>
nếu (sa = '1 'và sb = '0') sau đó
state_next <= a;
elsif (sa = '0 'và sb = '1') sau đó
đếm <= '1 ';
if (Q = "0.110") sau đó
state_next <= b;
nếu kết thúc;
nếu kết thúc;
khi b =>
if (Q = "0.111") sau đó
state_next <= c;
đếm <= '0 ';
elsif (sa = '1 ') sau đó
state_next <= b;
nếu kết thúc;
khi c =>
nếu (sa = '0 'và sb = '1') sau đó
state_next <= c;
elsif (sa = '1 'và sb = '0') sau đó
rõ ràng <= '0 ';
đếm <= '1 ';
if (Q = "0.110") sau đó
state_next <= d;
nếu kết thúc;
nếu kết thúc;
khi d =>
if (Q = "0.111") sau đó
state_next <= a;
đếm <= '0 ';
elsif (sb = '1 ') sau đó
state_next <= d;
nếu kết thúc;
kết thúc vụ án;
kết thúc quá trình;
quá trình (state_reg)
bắt đầu
Ga <= '1 '; Ya <= '0'; Ra <= '0 ';
Gb <= '0 '; Yb <= '0'; Rb <= '1 ';
trường hợp là state_reg
khi một =>
khi b =>
Ga <= '0 ';
Ya <= '1 ';
khi c =>
Ya <= '0 ';
Ra <= '1 ';
Gb <= '1 ';
khi d =>
Gb <= '0 ';
Yb <= '1 ';
kết thúc vụ án;
kết thúc quá trình;
end Behavioral;Thêm vào sau khi 1 giờ 4 phút:tôi nghĩ rằng ở trên mã sẽ mất thời gian của bạn ... nên chỉ cho tôi biết làm thế nào tôi có thể thực hiện một lưu lượng truy cập trong mã đơn giản của tôi VHDL ánh sáng.nó có 4 tiểu bang.((Ga, Rb), (Ya, Rb), (Ra, Gb), (Ra, Yb))
Màu xanh lá cây vàng = 30 giây
Màu vàng thành màu đỏ = 5 giây
thanx
ánh sáng điều khiển theo 4 tiểu bang thể hiện trong đoạn code dưới đây.của tôi
vấn đề chỉ là state_reg tín hiệu của tôi không thay đổi hình thức một
tiểu bang khác.điều này là bởi vì tôi truy cập bao gồm trong các
mã là một quá trình không hoạt động.màu xanh lá cây màu vàng để chờ đợi thời gian là 30 giây
và màu vàng thành màu đỏ là 5 giây.thời kỳ đồng hồ của tôi sẽ được 5 giây.do đó có thể
ai giúp tôi ra
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ----
thư viện ieee;
ieee.std_logic_1164.all sử dụng;
ieee.std_logic_arith.all sử dụng;
IEEE.std_logic_unsigned.all sử dụng;
TLC thực thể là
port (
CLK, đặt lại, sa, sb: in std_logic;
Ga, Ya, Ra, Gb, Yb, Rb: out std_logic
);
TLC kết thúc;
kiến trúc hành vi của TLC là
Loại state_type là (a, b, c, d);
tín hiệu state_reg, state_next: state_type;
tín hiệu Pre_Q, Q: std_logic_vector (3 downto 0);
tín hiệu số, rõ ràng: std_logic;
bắt đầu
- Mô tả các hành vi truy cập
quá trình (CLK, đếm, rõ ràng)
bắt đầu
nếu (rõ ràng = '0 ') sau đó
Pre_Q <= Pre_Q - Pre_Q;
elsif (CLK = '1 'và clk'event) sau đó
if (count = '1 ') sau đó
Pre_Q <= Pre_Q 1;
nếu kết thúc;
nếu kết thúc;
Hỏi <= Pre_Q;
kết thúc quá trình;- Nhà nước đăng kýquá trình (CLK, đặt lại)
bắt đầu
if (reset = '0 ') sau đó
state_reg <= a;
elsif (clk'event và CLK = '1 ') sau đó
state_reg <= state_next;
nếu kết thúc;
kết thúc quá trình;
- Tiếp theo nhà nước logic
quá trình (state_reg, Q, sa, sb)
bắt đầu
trường hợp là state_reg
khi một =>
nếu (sa = '1 'và sb = '0') sau đó
state_next <= a;
elsif (sa = '0 'và sb = '1') sau đó
đếm <= '1 ';
if (Q = "0.110") sau đó
state_next <= b;
nếu kết thúc;
nếu kết thúc;
khi b =>
if (Q = "0.111") sau đó
state_next <= c;
đếm <= '0 ';
elsif (sa = '1 ') sau đó
state_next <= b;
nếu kết thúc;
khi c =>
nếu (sa = '0 'và sb = '1') sau đó
state_next <= c;
elsif (sa = '1 'và sb = '0') sau đó
rõ ràng <= '0 ';
đếm <= '1 ';
if (Q = "0.110") sau đó
state_next <= d;
nếu kết thúc;
nếu kết thúc;
khi d =>
if (Q = "0.111") sau đó
state_next <= a;
đếm <= '0 ';
elsif (sb = '1 ') sau đó
state_next <= d;
nếu kết thúc;
kết thúc vụ án;
kết thúc quá trình;
quá trình (state_reg)
bắt đầu
Ga <= '1 '; Ya <= '0'; Ra <= '0 ';
Gb <= '0 '; Yb <= '0'; Rb <= '1 ';
trường hợp là state_reg
khi một =>
khi b =>
Ga <= '0 ';
Ya <= '1 ';
khi c =>
Ya <= '0 ';
Ra <= '1 ';
Gb <= '1 ';
khi d =>
Gb <= '0 ';
Yb <= '1 ';
kết thúc vụ án;
kết thúc quá trình;
end Behavioral;Thêm vào sau khi 1 giờ 4 phút:tôi nghĩ rằng ở trên mã sẽ mất thời gian của bạn ... nên chỉ cho tôi biết làm thế nào tôi có thể thực hiện một lưu lượng truy cập trong mã đơn giản của tôi VHDL ánh sáng.nó có 4 tiểu bang.((Ga, Rb), (Ya, Rb), (Ra, Gb), (Ra, Yb))
Màu xanh lá cây vàng = 30 giây
Màu vàng thành màu đỏ = 5 giây
thanx