VHDL: หรือบิตของเวกเตอร์ด้วยกัน


11

ฉันต้องการหรือบิตของเวกเตอร์ด้วยกัน สมมติว่าฉันมีเวกเตอร์ที่เรียกว่าexample(23 downto 0)และฉันต้องการหรือบิตทั้งหมดเป็นเวกเตอร์อื่นมีวิธีใดที่จะไม่เกี่ยวข้องกับการไปexample(0) or example(1) or ...example(23)หรือไม่


คุณสามารถเปรียบเทียบกับศูนย์แทนได้หรือไม่ ที่จะมีผลเช่นเดียวกัน
เดวิด

หากต้องการขยายความคิดเห็นของเดวิด (ใช้เวกเตอร์ 32 บิต): or_result <= '0' when input=X"00000000" else '1';เปลี่ยนจำนวนศูนย์เพื่อให้ตรงกับความยาวของเวกเตอร์ที่มีปัญหา

การลดลอจิกมีอยู่ใน vhdl 2008 โปรดดูstackoverflow.com/questions/20296276/…
Moberg

1
นอกจากนี้คุณสามารถใช้วิธีทั่วไปได้มากขึ้น:result <= '0' when (example=(example'range=>'0')) else '1';
Miguel Risco

คำตอบ:


12

or_reducestd_logic_miscคือสิ่งที่คุณต้องการและมันมีอยู่ใน สนับสนุนทั้ง A และ X สำหรับ FPGA


and_reduceเป็นอีกประโยชน์หนึ่ง
Aaron D. Marasco

5

Verilog มี "ตัวดำเนินการลด" ที่สะดวกสบายซึ่งทำสิ่งที่คุณต้องการอย่างแท้จริง: |example[23:0]ให้ผลลัพธ์ของ OR'ing บิตทั้งหมดของexampleเวกเตอร์

น่าเสียดาย VHDL ไม่มีโอเปอเรเตอร์นี้ ตามcomp.lang.vhdl คำถามที่พบบ่อยแม้ว่า

ไม่มีตัวดำเนินการ VHDL ที่กำหนดไว้ล่วงหน้าเพื่อทำการลดขนาดบิตของเวกเตอร์ทั้งหมด (เช่นเป็น "หรือ" บิตทั้งหมดของเวกเตอร์) อย่างไรก็ตามผู้ประกอบการลดสามารถดำเนินการได้ง่าย:

[ข้ามตัวอย่างที่ไม่ได้จัดการค่า 'X' และ 'Z']

    function or_reduce( V: std_logic_vector )
                return std_ulogic is
      variable result: std_ulogic;
    begin
      for i in V'range loop
        if i = V'left then
          result := V(i);
        else
          result := result OR V(i);
        end if;
        exit when result = '1';
      end loop;
      return result;
    end or_reduce;
    ...
    b <= or_reduce( b_vec ); 

ใครก็ตามที่ลงคะแนนโปรดอธิบายว่าทำไม
โฟตอน

สิ่งนี้สังเคราะห์ได้หรือไม่?
Johannes Schaub - litb

@ JohannesSchaub-litb แน่นอนมันสามารถถูกสังเคราะห์ไปยังประตูใหญ่หรือประตูใหญ่ (หรือต้นไม้ที่เล็กกว่า) เป็นไปได้ว่าเวอร์ชั่นในไลบรารีมาตรฐาน (ในคำตอบของ Aaron D. Marasco) จะได้รับการปรับให้ดีกว่าสิ่งที่สร้างขึ้นทันที
โฟตอน

VHDL-2008 มีตัวดำเนินการลดค่านารี คำถามที่พบบ่อยล้าสมัย นอกจากนี้ฟังก์ชั่นที่นำเสนอมีความสามารถในการสังเคราะห์ที่น่าสงสัยได้เนื่องจากทางออกแรกเริ่มซึ่งเครื่องมือบางอย่างอาจทำให้หายใจไม่ออกและไม่จำเป็นอื่น ๆ
KevinThibedeau
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.