07.05.2015 Views

4.เฉลยข้อสอบปลายภาค 1/2556

4.เฉลยข้อสอบปลายภาค 1/2556

4.เฉลยข้อสอบปลายภาค 1/2556

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

รหัส................................................... ชื่อ-นามสกุล...........................................................................................<br />

1. จาก Block diagram ของวงจรสร้างสัญญาณ ในรูปที่ 1 ก าหนดให้<br />

CLK เป็นสัญญาณนาฬิกา<br />

X และ START เป็นสัญญาณอินพุท ใช้ควบคุมการท างาน<br />

Y เป็นสัญญาณเอาท์พุท<br />

การท างาน<br />

ปกติ สัญญาณเอาท์พุท Y = ‘1’<br />

ถ้า X = ‘1’ แล้ว จ่าย สัญญาณพัลส์ เข้าที่ START จะได้สัญญาณ Y ออกมาเป็น<br />

ลอจิก ‘0’ 9 mS -> ลอจิก ‘1’ 2 mS -> ลอจิก ‘0’ 1 mS แล้วเป็นสภาวะปกติ ลอจิก ‘1’<br />

ถ้า X = ‘0’ แล้ว จ่าย สัญญาณพัลส์ เข้าที่ START จะได้สัญญาณ Y ออกมาเป็น<br />

ลอจิก ‘0’ 3 mS -> ลอจิก ‘1’ 8 mS -> ลอจิก ‘0’ 1 mS แล้วเป็นสภาวะปกติ ลอจิก ‘1’<br />

รูปที่ 1 ตัวอย่างสัญญาณเอาท์พุท Y<br />

(ก) จะใช้สัญญาณ CLK ความถี่เท่าไร ...1 KHz..................... (2 คะแนน)<br />

(ข) จงเขียน State diagram (4 คะแนน)<br />

(ค) จงเขียน VHDL Code<br />

(4 คะแนน)<br />

library IEEE;<br />

use IEEE.std_logic_1164.all;<br />

use IEEE.std_logic_unsigned.ALL;<br />

entity gen is<br />

port(CLK: in STD_LOGIC;<br />

x: in STD_LOGIC;<br />

start: in STD_LOGIC;<br />

y: out STD_LOGIC);<br />

end gen;<br />

architecture machine of gen is<br />

type state_type is (s0,s1,s2,s3,s4,s5,s6);<br />

signal state: state_type := s0;<br />

signal t: integer range 0 to 15 := 0;<br />

begin<br />

process (clk)<br />

begin<br />

when s1 =><br />

case t is<br />

when 0 to 2 =><br />

y <br />

y <br />

y


รหัส................................................... ชื่อ-นามสกุล...........................................................................................<br />

if clk = '1' and clk'event then<br />

t<br />

y


รหัส................................................... ชื่อ-นามสกุล...........................................................................................<br />

library IEEE;<br />

use IEEE.std_logic_1164.all;<br />

use IEEE.std_logic_unsigned.ALL;<br />

entity counter is<br />

port(CLK: in STD_LOGIC;<br />

C: in STD_LOGIC;<br />

E: in STD_LOGIC;<br />

y: out STD_LOGIC_VECTOR(2 downto<br />

0));<br />

end counter;<br />

architecture moore_beh of counter is<br />

type state_type is (s0,s1,s2,s3,s4,s5,s6,s7);<br />

signal state: state_type;<br />

begin<br />

process (clk)<br />

begin<br />

if (clk = '1' and clk'event) and (C ='1' )then<br />

case state is<br />

when s0 =><br />

if E = '0' then<br />

state


รหัส................................................... ชื่อ-นามสกุล...........................................................................................<br />

(ค) จงเขียน State diagram ของวงจรนี้ (3 คะแนน)<br />

X = 1<br />

X = 0<br />

X = 0<br />

S0/00 S1/00<br />

X = 0<br />

S2/00<br />

X = 1<br />

S3/01<br />

X = 0<br />

X = 1<br />

S3/00<br />

X = 1<br />

S5/10<br />

(ง) จงเขียน VHDL Code (7 คะแนน)<br />

library IEEE;<br />

use IEEE.std_logic_1164.all;<br />

use IEEE.std_logic_unsigned.ALL;<br />

entity seq is<br />

port(CLK: in STD_LOGIC;<br />

x: in STD_LOGIC;<br />

y: out STD_LOGIC_VECTOR(1 downto 0));<br />

end seq;<br />

architecture moore_beh of seq is<br />

type state_type is (s0,s1,s2,s3,s4,s5);<br />

signal state: state_type;<br />

begin<br />

process (clk)<br />

begin<br />

if clk = '0' and clk'event then<br />

case state is<br />

when s0 =><br />

if x = '0' then<br />

state


รหัส................................................... ชื่อ-นามสกุล...........................................................................................<br />

(ข) จงเขียน VHDL Code (7 คะแนน)<br />

library IEEE;<br />

use IEEE.std_logic_1164.all;<br />

use IEEE.std_logic_unsigned.ALL;<br />

use IEEE.std_logic_textio.all;<br />

use STD.textio.all;<br />

entity seq_teb is<br />

end seq_teb;<br />

architecture seq_beh of seq_teb is<br />

component seq<br />

port(CLK: in STD_LOGIC;<br />

x: in STD_LOGIC;<br />

y: out STD_LOGIC_VECTOR(1 downto<br />

0));<br />

end component;<br />

signal sclk, sx : std_logic;<br />

signal sy : std_logic_vector(1 downto 0);<br />

begin<br />

DUT: seq port map(CLK => sclk, x => sx, y =><br />

sy);<br />

begin<br />

wait for 50 ns;<br />

while not endfile(STIMULI_IN) loop<br />

sclk

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!