คุณกำลังพยายามกำหนดค่าชื่อที่จัดทำดัชนีไว้ o
จากผลลัพธ์ของนิพจน์
คำนำหน้าชื่อที่จัดทำดัชนีอาจเป็นชื่อหรือการเรียกใช้ฟังก์ชันก็ได้
indexed_name ::= prefix ( expression { , expression } )
prefix ::=
name
| function_call
ฟังก์ชันคือนิพจน์เช่นเดียวกับคุณลักษณะที่กำหนดไว้ล่วงหน้าส่วนใหญ่ เช่น i'length
หรือ i'left
การเรียกใช้ฟังก์ชันมีรูปแบบเฉพาะ:
function_call ::=
function_name [ ( actual_parameter_part ) ]
actual_parameter_part ::= parameter_association_list
คำนึงถึงทุกสิ่งตลอดจนการใช้แพ็คเกจ numeric_std (ในกรณีนี้โดยไม่มี numeric_std_unsigned) ให้:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity indexing is
constant parameter: natural :=7;
end entity;
architecture foo of indexing is
signal o : std_logic;
signal i : signed(parameter downto 0);
constant c : integer := 5;
begin
o <= "-"(i,to_signed(c,i'length)) (i'left);
end architecture;
และแน่นอน คุณสามารถใช้การแปลงประเภทในรายการการเชื่อมโยงสำหรับรายการการเชื่อมโยงการเรียกใช้ฟังก์ชัน "-"
เลือกประเภท signed
เนื่องจากค่าคงที่ c
ของคุณถูกระบุเป็นประเภทจำนวนเต็ม อาจเป็นประเภท unsigned ได้อย่างง่ายดายหรือ std_logic_vector โดยใช้แพ็คเกจ numeric_std_unsigned การเลือกประเภทที่ลงนามนั้นค่อนข้างแปลก o
ระบุเครื่องหมายผลลัพธ์ด้วยวิธีนี้
ตัวอย่างข้างต้นเป็นการวิเคราะห์ อธิบายรายละเอียด และดำเนินการ ซึ่งไม่ได้มีอะไรน่าสนใจมากนัก ในขณะที่การสาธิตไวยากรณ์นั้นถูกต้อง
ชื่อสไลซ์สามารถจัดการได้ในทำนองเดียวกัน
(และใช่ สิ่งนี้จะใช้ได้กับแพ็คเกจ std_logic_unsigned ของ Synopsys โดยไม่มีการแปลงประเภทและระบุประเภท i
std_logic_vector มีข้อได้เปรียบเล็กน้อยเมื่อใช้การเรียกใช้ฟังก์ชัน)
person
Community
schedule
22.09.2014