ตัวแปร VHDL ถูกสังเคราะห์โดยเครื่องมือการสังเคราะห์อย่างไร


9

ฉันรู้สองวิธีที่ตัวแปร VHDL ถูกสังเคราะห์โดยเครื่องมือการสังเคราะห์:

  • ตัวแปรที่สังเคราะห์เป็นตรรกะเชิงผสม
  • ตัวแปรที่สังเคราะห์เป็น Latch โดยไม่ได้ตั้งใจ (เมื่อกำหนดค่าตัวแปรเริ่มต้นให้กับสัญญาณหรือตัวแปรอื่น)

อะไรคือวิธีอื่น ๆ ที่ตัวแปร VHDL สามารถสังเคราะห์ได้? (ตัวอย่าง: สามารถตีความเป็น FF ได้หรือไม่)

คำตอบ:


8

ฉันจะแยกแยะความเป็นไปได้สามอย่าง:

  1. ตัวแปร VHDL ไม่มีการนำเสนอฮาร์ดแวร์เลย สมมติตัวอย่างต่อไปนี้

    signal a,b,c : integer;  
    ...  
    process ( clk ) is  
    variable var : integer := 0;  
    begin  
    if ( rising_edge(clk) ) then  
    var := a + b;  
    c <= var;  
    end if;  
    end process;
    

    ตัวแปรvarไม่ได้สังเคราะห์มาเป็นตรรกะเชิง combinatorial เลย (สมมติว่านี่คือสิ่งที่มีความหมายในคำถาม) มันค่อนข้างด้านขวาของการมอบหมายa + bที่ถูกสังเคราะห์เป็นฮาร์ดแวร์ การพูดอย่างเคร่งครัดตัวแปรจะไม่ถูกสังเคราะห์เป็นตรรกะเชิงผสม

  2. ตัวแปรเพียงเก็บผลกลางซึ่งประเมินในวงจรนาฬิกาเดียวกัน -> ไม่มีการสังเคราะห์ฮาร์ดแวร์ (นี่คือ 1) อีกครั้ง) หรือถูกประเมินในวงจรนาฬิกาต่อไปนี้ -> flipflop ถูกสังเคราะห์

  3. หนึ่งใน latches ที่หวั่นเหล่านั้นถูกอนุมานในกรณีเช่นนี้ซึ่งมีสาขาย่อยตามเงื่อนไขซึ่งตัวแปรถูกกำหนดไม่ใช่ค่าใหม่ (ขึ้นอยู่กับสัญญาณบางอย่าง) หรือค่าเริ่มต้น กรณีนี้มักจะเกิดขึ้นโดยไม่ตั้งใจ :-)


"lread latch" สามารถเกิดขึ้นได้นอกกระบวนการนาฬิกาและคนส่วนใหญ่ (จากประสบการณ์ของฉัน) วันนี้ไม่ได้ใช้กระบวนการที่ไม่ได้รับการตอกบัตร ดังนั้นความกลัวของสลักจึงไม่เป็นปัญหาอีกต่อไป (IMHO) - มันเกิดจากสมัยก่อนเมื่อคุณต้องเขียนตรรกะเชิง combinatorial ของคุณในกระบวนการที่แยกต่างหากไปยังรองเท้าแตะของคุณ
Martin Thompson

4

หากคุณใช้ค่าในตัวแปรก่อนที่จะจัดเก็บคุณจะได้รับค่าที่เก็บไว้ครั้งสุดท้ายที่กระบวนการจัดเก็บไว้ (ในกระบวนการที่มีการโอเวอร์คล็อกค่าจากรอบนาฬิกาก่อนหน้า) นั่นคือการสังเคราะห์เป็นทะเบียนหรือ FF

แน่นอนในรอบนาฬิกาแรกคุณจะได้รับขยะเว้นแต่คุณจะกำหนดค่าเริ่มต้นให้กับตัวแปรในการรีเซ็ต

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