ฉันมีข้อผิดพลาดมากมายแม้จะพยายามพิมพ์โปรแกรมด้วยวิธีต่างๆ แต่ส่วนใหญ่มักใช้การคิดเชิงตรรกะ ประเด็นคือฉันไม่เคยลองรวมสิ่งต่าง ๆ เข้าด้วยกันมาก่อน จึงมีปัญหาคือไม่สามารถคอมไพล์ได้ มีข้อกำหนดค่อนข้างมากและฉันสามารถประมวลผลได้อย่างสมเหตุสมผล แต่ต้องการความช่วยเหลือในการเขียนโค้ด ไม่เป็นไรที่จะนำทางฉัน? ขอบคุณ
รหัสที่แนบมาด้านล่างไม่ใช่รหัสที่สมบูรณ์ แต่มีข้อผิดพลาดมากมายอยู่แล้ว
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;
อาจเป็นข้อความสั้นๆ เกี่ยวกับโค้ดของฉัน โดยพื้นฐานแล้วเพื่อออกแบบระบบการจัดการสินค้าคงคลังที่ตรวจจับจำนวนเครื่องแบบที่ส่งคืนไปยังดรอปบ็อกซ์ ผู้ใช้สามารถตั้งค่าเครื่องแบบจำนวนเท่าใดก็ได้ที่เขาต้องการตรวจจับบนอินพุต: D3D2D1D0 ออกแบบระบบตามข้อกำหนดดังต่อไปนี้-
- เมื่อถึงหมายเลขอ้างอิงแล้ว ไฟ LED จะเปิดขึ้นและการนับจะหยุดที่หมายเลขอ้างอิงแม้ว่าจะเปิดใช้งานเซ็นเซอร์อินพุตก็ตาม แสดงจำนวนเครื่องแบบที่ตรวจพบบนจอแสดงผลเจ็ดส่วนและค่าของการอ้างอิงบนจอแสดงผลอื่น เช่น หากหมายเลขอ้างอิงคือ 15
- เมื่อเปิดใช้งานการรีเซ็ต ไฟ LED และเซ็กเมนต์ทั้งเจ็ดควรสะท้อนถึงสถานะล่าสุดของชุดเครื่องแบบที่ตรวจพบ
กรุณาแนะนำ!
q = D3&D2&D1&D0
นี้ ไม่มีตัวดำเนินการความเท่าเทียมกันที่สามารถทดสอบระหว่างตัวถูกดำเนินการทางซ้ายกับประเภทฐานของ std_ulogic และตัวถูกดำเนินการทางขวาของประเภทอาร์เรย์ที่ไม่รู้จักพร้อมกับประเภทองค์ประกอบฐานของ std_ulogic บางทีตัวดำเนินการต่อข้อมูลเหล่านั้นอาจต้องการเป็นตัวดำเนินการ AND? - person   schedule 19.08.2020