Saya mengalami banyak kesalahan meskipun mencoba berbagai cara mengetik program saya, tetapi sebagian besar waktu menggunakan pemikiran logis. Masalahnya adalah, saya belum pernah mencoba menggabungkan hal-hal yang berbeda sebelumnya, sehingga mengalami masalah karena tidak dapat mengkompilasinya. Persyaratannya cukup banyak dan saya bisa memprosesnya secara logis, tetapi butuh bantuan untuk codingnya. Apakah boleh membimbing saya? Terima kasih.
Kode terlampir di bawah ini belum selesai, tetapi sudah banyak kesalahan.
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity tracking7 is
port ( sensor : in std_logic;
reset_bar : in std_logic;
D3, D2, D1, D0 : in std_logic;
q : out std_logic;
led : out std_logic;
a4,b4,c4,d4,e4,f4,g4 : out std_logic);
end tracking7;
architecture flow of tracking7 is
signal input : std_logic_vector (3 downto 0); --VECTORS FOR INTERNAL
signal output : std_logic_vector (6 downto 0); --USE IN DECODER STATEMENTS
signal count_sig: unsigned (3 downto 0);
begin
input <= (D3, D2 , D1, D0);
WITH input SELECT
output <= "0000001" when "0000", --DISPLAY 0
"1001111" when "0001", --DISPLAY 1
"0010010" when "0010", --DISPLAY 2
"0000110" when "0011", --DISPLAY 3
"1001100" when "0100", --DISPLAY 4
"0100100" when "0101", --DISPLAY 5
"0100000" when "0110", --DISPLAY 6
"0001111" when "0111", --DISPLAY 7
"0000000" when "1000", --DISPLAY 8
"0000100" when "1001", --DISPLAY 9
"0001000" when "1010", --DISPLAY A
"1100000" when "1011", --DISPLAY B
"0110001" when "1100", --DISPLAY C
"1000100" when "1101", --DISPLAY D
"0110000" when "1110", --DISPLAY E
"0111000" when "1111", --DISPLAY F
"1111111" when others; --BLANK DISPLAY
process ( sensor, reset_bar)
begin
if (reset_bar = '1') then count_sig <= count_sig;
elsif falling_edge (sensor) then if (count_sig = D3& D2& D1& D0) then
count_sig <= "0000";
else
count_sig <= count_sig + 1;
end if;
end if;
end process;
process (D3, D2, D1, D0)
begin
if (q = D3&D2&D1&D0)
then led <= '1'; --LED light up when reach ref no
else
led<= '0';
end if;
end process;
a4 <= output(6);
b4 <= output(5);
c4 <= output(4);
d4 <= output(3);
e4 <= output(2);
f4 <= output(1);
g4 <= output(0);
q <= std_logic_vector (count_sig);
end flow;
Mungkin catatan singkat tentang kode saya, pada dasarnya untuk merancang sistem manajemen inventaris yang mendeteksi jumlah seragam yang dikembalikan ke dropbox. Pengguna dapat mengatur sejumlah seragam yang ingin dideteksi pada input: D3D2D1D0. Rancang sistem dengan spesifikasi berikut-
- Setelah nomor referensi tercapai, LED menyala dan penghitungan berhenti pada nomor referensi meskipun sensor input diaktifkan. Tampilkan jumlah seragam yang terdeteksi pada tampilan tujuh segmen dan nilai referensi pada tampilan lainnya. Misal: Jika nomor referensinya 15
- Saat reset diaktifkan, led dan tujuh segmen akan mencerminkan status terbaru dari seragam yang terdeteksi.
Mohon saran!
q = D3&D2&D1&D0
ini, tidak ada operator kesetaraan yang dapat menguji antara operan sebelah kiri dengan tipe dasar std_ulogic dan operan sebelah kanan dari tipe array yang tidak diketahui dengan tipe elemen dasar std_ulogic. Mungkin operator penggabungan tersebut ingin menjadi operator AND? - person   schedule 19.08.2020