Khoa Điện - Điện Tử Trường Cao Đẳng Công Thương TpHCM
chào mừng bạn đã đến với diễn đàn điện - điện tử HITC

Join the forum, it's quick and easy

Khoa Điện - Điện Tử Trường Cao Đẳng Công Thương TpHCM
chào mừng bạn đã đến với diễn đàn điện - điện tử HITC
Khoa Điện - Điện Tử Trường Cao Đẳng Công Thương TpHCM
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.
Latest topics
» Bán van cấp nước máy giặt tại Hà Nội
thiết kế mạch chuyển đổi số nhị phân 8 bit sang số BCD EmptyMon Oct 05, 2015 1:46 pm by liemhuong84

» Bán túi lọc cặn máy giặt tại Hà Nội
thiết kế mạch chuyển đổi số nhị phân 8 bit sang số BCD EmptySun Sep 27, 2015 5:14 am by liemhuong84

» Bán dây curoa máy giặt chính hãng tại Hà Nội
thiết kế mạch chuyển đổi số nhị phân 8 bit sang số BCD EmptyThu Sep 24, 2015 9:35 am by liemhuong84

» Sửa chữa tủ lạnh Darling tại Hà Nội
thiết kế mạch chuyển đổi số nhị phân 8 bit sang số BCD EmptySat Sep 19, 2015 6:21 am by liemhuong84

» Bơm gas tủ lạnh tại hà nội giá rẻ
thiết kế mạch chuyển đổi số nhị phân 8 bit sang số BCD EmptySat Sep 12, 2015 2:15 pm by liemhuong84

» Sửa chữa tủ lạnh Electrolux tại nhà
thiết kế mạch chuyển đổi số nhị phân 8 bit sang số BCD EmptyFri Aug 14, 2015 10:38 am by liemhuong84

» Cửa hàng sửa chữa tủ lạnh tại Hà Nội
thiết kế mạch chuyển đổi số nhị phân 8 bit sang số BCD EmptyFri Aug 07, 2015 4:02 pm by liemhuong84

» Sửa chữa tủ lạnh Sanyo tại nhà Hà Nội giá rẻ
thiết kế mạch chuyển đổi số nhị phân 8 bit sang số BCD EmptySun Aug 02, 2015 5:39 pm by liemhuong84

» điểm kts 1
thiết kế mạch chuyển đổi số nhị phân 8 bit sang số BCD EmptyWed Jun 24, 2015 9:26 pm by sung_hitu


thiết kế mạch chuyển đổi số nhị phân 8 bit sang số BCD

2 posters

Go down

thiết kế mạch chuyển đổi số nhị phân 8 bit sang số BCD Empty thiết kế mạch chuyển đổi số nhị phân 8 bit sang số BCD

Bài gửi  2110060034 Wed Nov 07, 2012 11:26 am

ENTITY nhiphan8bit IS
PORT(
Q: out STD_LOGIC_VECTOR(3 downto0);
I0, I1 , I2, I3, I4, I5, I6, I7 : IN STD_LOGIC);
End nhiphan8bit;
Architecture BCD of nhiphan8bit IS
Begin
Process (I0, I1, I2, I3, I4, I5, I6,I7)
In:integer;
I <= I0,I1,I2,I3,I4,I5,I6,I7;
In:= I7*2**0 + I6*2**1 + I5*2**2 + I4*2**3 + I3*2**4 + I2*2**5 + I1*2**6
+ I0*2**7;
IF( In = 0 ) Then Q<= "0000" ;
ELSIF (In = 1 ) Then Q <= "0001" ;
ELSIF (In = 2 ) Then Q <= "0010" ;
ELSIF (In = 3 ) Then Q <= "0011" ;
ELSIF (In = 4 ) Then Q <= "0100" ;
ELSIF (In = 5 ) Then Q <= "0101" ;
ELSIF (In = 6 ) Then Q <= "0110" ;
ELSIF (In = 7 ) Then Q <= "0111" ;
ELSIF (In = 8 ) Then Q <= "1000" ;
ELSIF (In = 9 ) Then Q <= "1001" ;
ElSE NULL;
END IF;
END PROCESS;
END BCD;
mọi người xem giùm xem có sai chỗ nào không


Được sửa bởi 2110060034 ngày Wed Nov 07, 2012 6:52 pm; sửa lần 1.

2110060034

Tổng số bài gửi : 28
Join date : 03/11/2012
Age : 31
Đến từ : Di An Binh Duong

Về Đầu Trang Go down

thiết kế mạch chuyển đổi số nhị phân 8 bit sang số BCD Empty Re: thiết kế mạch chuyển đổi số nhị phân 8 bit sang số BCD

Bài gửi  williamcuong282 Wed Nov 07, 2012 3:20 pm


Theo đề bài này thì có 2 cách hiểu:
-Cách thứ nhất là từ mã 7 đoạn(8bit) chuyển ngược lại mã BCD 4 bit. Vậy thì dùng CASE là hay nhất, vì không có quy luật. Không có gì để bàn về cách hiểu này.

-Cách thứ 2 là chỉ lấy 10 trạng thái đầu tiên của 8 bit rồi đem đi so sánh để gán ngõ ra tương ứng. Mình sẽ phân tích cách hiểu này theo ý đồ của bạn Hiệp.

Đúng về ý tưởng(chuyển ngõ vào 8 bít thành Thập phân rồi đem so sánh 0-9, nếu đúng thì gán ngõ ra 4 bit tương ứng) nhưng hiệu quả không cao. VD: ngõ vào là 11111111 thì chương trình của Hiệp vẫn phải thực thi hết cả mấy chục câu lệnh. Và bài lập trình còn khá nhìu lỗi cú pháp.


ENTITY nhiphan8bit IS
PORT( I: inSTD_LOGIC_VECTOR (7 downto 0); --Không cần thiết
Q: out STD_LOGIC_VECTOR(3 downto0);
I0, I1 , I2, I3, I4, I5, I6, I7 : IN STD_LOGIC_VECTOR(1 downto 0); --Ngõ vào chỉ có 1 bit chứ không phải vector 2 bit
In: STD_LOGIC; --Biến trung gian này nên đặt trong Process với kiểu dữ liệu Integer
End nhiphan8bit;
Architecture BCD of nhiphan8bit IS
Begin
Process (I, Q, I0, I1, I2, I3, I4, I5, I6,I7)
I <= I0I1I2I3I4I5I6I7; --Hoàn toàn sai và không cần thiết
Loop --Vô lý
In:= I7*2**0 + I6*2**1 + I5*2**2 + I4*2**3 + I3*2**4 + I2*2**5 + I1*2**6 + I0*2**7;
IF( In = ‘0’ ) Then Q<= 0000 ;
ELSIF (In = ‘ 1’ ) Then Q <= 0001 ; --In là số nguyên không cần ' ', gán ngõ ra thiếu " "
ELSIF (In = ‘ 2’ ) Then Q <= 0010 ;
ELSIF (In = ‘ 3’ ) Then Q <= 0011 ;
ELSIF (In = ‘ 4’ ) Then Q <= 0100 ;
ELSIF (In = ‘ 5’ ) Then Q <= 0101 ;
ELSIF (In = ‘ 6’ ) Then Q <= 0110 ;
ELSIF (In = ‘ 1’ ) Then Q <= 0111 ;
ELSIF (In = ‘ 1’ ) Then Q <= 1000 ;
ELSIF (In = ‘ 1’ ) Then Q <= 1001 ;
ElSE NULL;
END IF;
END LOOP;
END PROCESS;
END BCD;

1 bài toán lập trình không chỉ đúng mà phải tối ưu về dung lượng và tiết kiệm thời gian chạy. Mình có cách ngắn hơn như sau: Bài của Hiệp là từ ngõ vào 8 bit để đưa ra Ngõ ra BCD 4bit (0000 đến 1001). Ta dùng 1 vòng lặp i chạy từ 0 đến 3, gán Out(i) <= In(i) với điều kiện I < "00001010"(để khi ngõ vào ngoài phạm vi khỏi phải chạy vòng lặp). thế là xong. VD: In="00000101" thì Out="0101", rõ ràng là Hiệp chỉ cần lấy 4 bit thấp của ngõ vào gán cho ngõ ra là xong.

Code như sau:

ENTITY nhiphan8bit IS
PORT( I: inSTD_LOGIC_VECTOR (7 downto 0);
Q: out STD_LOGIC_VECTOR(3 downto 0));
end nhiphan8bit;


Architecture BCD of nhiphan8bit IS
Begin
Process(I)
if (I<"00001010")
for i IN 0 to 3 loop
Q(i) <= I(i);
end loop;
else NULL;
end if;
end Process;
end BCD;

williamcuong282

Tổng số bài gửi : 19
Join date : 04/11/2012
Age : 34
Đến từ : Thanh Hóa

Về Đầu Trang Go down

thiết kế mạch chuyển đổi số nhị phân 8 bit sang số BCD Empty Re: thiết kế mạch chuyển đổi số nhị phân 8 bit sang số BCD

Bài gửi  2110060034 Wed Nov 07, 2012 7:05 pm

williamcuong282 đã viết:

Theo đề bài này thì có 2 cách hiểu:
-Cách thứ nhất là từ mã 7 đoạn(8bit) chuyển ngược lại mã BCD 4 bit. Vậy thì dùng CASE là hay nhất, vì không có quy luật. Không có gì để bàn về cách hiểu này.

-Cách thứ 2 là chỉ lấy 10 trạng thái đầu tiên của 8 bit rồi đem đi so sánh để gán ngõ ra tương ứng. Mình sẽ phân tích cách hiểu này theo ý đồ của bạn Hiệp.

Đúng về ý tưởng(chuyển ngõ vào 8 bít thành Thập phân rồi đem so sánh 0-9, nếu đúng thì gán ngõ ra 4 bit tương ứng) nhưng hiệu quả không cao. VD: ngõ vào là 11111111 thì chương trình của Hiệp vẫn phải thực thi hết cả mấy chục câu lệnh. Và bài lập trình còn khá nhìu lỗi cú pháp.


ENTITY nhiphan8bit IS
PORT( I: inSTD_LOGIC_VECTOR (7 downto 0); --Không cần thiết
Q: out STD_LOGIC_VECTOR(3 downto0);
I0, I1 , I2, I3, I4, I5, I6, I7 : IN STD_LOGIC_VECTOR(1 downto 0); --Ngõ vào chỉ có 1 bit chứ không phải vector 2 bit
In: STD_LOGIC; --Biến trung gian này nên đặt trong Process với kiểu dữ liệu Integer
End nhiphan8bit;
Architecture BCD of nhiphan8bit IS
Begin
Process (I, Q, I0, I1, I2, I3, I4, I5, I6,I7)
I <= I0I1I2I3I4I5I6I7; --Hoàn toàn sai và không cần thiết
Loop --Vô lý
In:= I7*2**0 + I6*2**1 + I5*2**2 + I4*2**3 + I3*2**4 + I2*2**5 + I1*2**6 + I0*2**7;
IF( In = ‘0’ ) Then Q<= 0000 ;
ELSIF (In = ‘ 1’ ) Then Q <= 0001 ; --In là số nguyên không cần ' ', gán ngõ ra thiếu " "
ELSIF (In = ‘ 2’ ) Then Q <= 0010 ;
ELSIF (In = ‘ 3’ ) Then Q <= 0011 ;
ELSIF (In = ‘ 4’ ) Then Q <= 0100 ;
ELSIF (In = ‘ 5’ ) Then Q <= 0101 ;
ELSIF (In = ‘ 6’ ) Then Q <= 0110 ;
ELSIF (In = ‘ 1’ ) Then Q <= 0111 ;
ELSIF (In = ‘ 1’ ) Then Q <= 1000 ;
ELSIF (In = ‘ 1’ ) Then Q <= 1001 ;
ElSE NULL;
END IF;
END LOOP;
END PROCESS;
END BCD;

1 bài toán lập trình không chỉ đúng mà phải tối ưu về dung lượng và tiết kiệm thời gian chạy. Mình có cách ngắn hơn như sau: Bài của Hiệp là từ ngõ vào 8 bit để đưa ra Ngõ ra BCD 4bit (0000 đến 1001). Ta dùng 1 vòng lặp i chạy từ 0 đến 3, gán Out(i) <= In(i) với điều kiện I < "00001010"(để khi ngõ vào ngoài phạm vi khỏi phải chạy vòng lặp). thế là xong. VD: In="00000101" thì Out="0101", rõ ràng là Hiệp chỉ cần lấy 4 bit thấp của ngõ vào gán cho ngõ ra là xong.

Code như sau:

ENTITY nhiphan8bit IS
PORT( I: inSTD_LOGIC_VECTOR (7 downto 0);
Q: out STD_LOGIC_VECTOR(3 downto 0));
end nhiphan8bit;


Architecture BCD of nhiphan8bit IS
Begin
Process(I)
if (I<"00001010")
for i IN 0 to 3 loop
Q(i) <= I(i);
end loop;
else NULL;
end if;
end Process;
end BCD;
mình sửa lại rùi sáng đánh không để ý lại mấy chỗ sai? lệnh CASE thì ai cũng biết mình muốn làm cách khác cho vui?làm gì nó thực hiện mấy chục câu lệnh? nếu không phải 10 trường hợp trên nó sẽ chuyển ELSE kết thúc IF?nếu theo cách của bạn thi 4 trạng thái đầu "0000"ngõ ra BCD không biết máy có hiểu không ta?
Process(I)
if (I<"00001010")
for i IN 0 to 3 loop
Q(i) <= I(i);
end loop;
else NULL;
end if;
end Process;
end BCD;
bạn giải thích rõ hơn không mình không hiểu lắm? ví dụ : nếu i=1 tự nhiên Q(1)<=I(1);

2110060034

Tổng số bài gửi : 28
Join date : 03/11/2012
Age : 31
Đến từ : Di An Binh Duong

Về Đầu Trang Go down

thiết kế mạch chuyển đổi số nhị phân 8 bit sang số BCD Empty Re: thiết kế mạch chuyển đổi số nhị phân 8 bit sang số BCD

Bài gửi  williamcuong282 Wed Nov 07, 2012 9:54 pm

Rất đơn giản, VD: ngõ vào I=00001001, thõa mãn ĐK: I<00001010 Ta cần đưa ra Q=1001.
i chạy từ 0 đến 3 sẽ chạy như sau:
i=0
Q(0) <= I(0) nghĩa là Q(0)=''1''
i=1
Q(1) <= I(1) nghĩa là Q(1)=''0''
i=2
Q(2) <= I(2) nghĩa là Q(2)=''0''
i=3
Q(3) <= I(3) nghĩa là Q(3)=''1''



williamcuong282

Tổng số bài gửi : 19
Join date : 04/11/2012
Age : 34
Đến từ : Thanh Hóa

Về Đầu Trang Go down

thiết kế mạch chuyển đổi số nhị phân 8 bit sang số BCD Empty Re: thiết kế mạch chuyển đổi số nhị phân 8 bit sang số BCD

Bài gửi  2110060034 Thu Nov 08, 2012 7:06 am

williamcuong282 đã viết:Rất đơn giản, VD: ngõ vào I=00001001, thõa mãn ĐK: I<00001010 Ta cần đưa ra Q=1001.
i chạy từ 0 đến 3 sẽ chạy như sau:
i=0
Q(0) <= I(0) nghĩa là Q(0)=''1''
i=1
Q(1) <= I(1) nghĩa là Q(1)=''0''
i=2
Q(2) <= I(2) nghĩa là Q(2)=''0''
i=3
Q(3) <= I(3) nghĩa là Q(3)=''1''


oh được đó nhỉ? bao giờ thực hành thử làm xem sao hihj cám ơn nhá

2110060034

Tổng số bài gửi : 28
Join date : 03/11/2012
Age : 31
Đến từ : Di An Binh Duong

Về Đầu Trang Go down

thiết kế mạch chuyển đổi số nhị phân 8 bit sang số BCD Empty Re: thiết kế mạch chuyển đổi số nhị phân 8 bit sang số BCD

Bài gửi  Sponsored content


Sponsored content


Về Đầu Trang Go down

Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết