亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? uart_core.vhd

?? 幾個非常適用的用FPGA編寫的實例
?? VHD
字號:
-- 庫聲明
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use WORK.UART_PACKAGE.all;

entity uart_core is
	generic (
	-- 數據位個數
	DATA_BIT : integer := 8;
	-- 總數據個數
	TOTAL_BIT : integer := 10;
	-- 奇偶校驗規則
	PARITY_RULE : PARITY := NONE );
	port (
	-- 時鐘和復位信號
	clk : in std_logic;
	reset_n : in std_logic;
	-- 和信號監測器的接口信號
	new_data : in std_logic;
	reset_dt : out std_logic;
	-- 復位、使能子模塊的信號
	reset_parts : out std_logic;
	ce_parts : out std_logic;
	-- 和移位寄存器的接口信號
	send_si : out std_logic;
	sel_si : out std_logic;
	regs : in std_logic_vector(TOTAL_BIT-1 downto 0);
	-- 計數器時鐘選擇信號和計數器計數到達上閾的指示信號
	sel_clk : out std_logic;
	overflow : in std_logic;
	-- 和奇偶校驗器的接口信號
	sel_pv : out std_logic;
	parity : in std_logic;
	-- 輸出選擇信號
	sel_out : out std_logic;
	-- 提供給CPU的接口信號
	send : in std_logic;
	send_bus : in std_logic_vector(DATA_BIT-1 downto 0);
	send_over : out std_logic;
	recv : out std_logic;
	recv_bus : out std_logic_vector(DATA_BIT-1 downto 0);
	error : out std_logic );
	
end uart_core;


architecture uart_core of uart_core is

-- 內部信號
signal state : UART_STATE := UART_IDLE;
signal send_buf : std_logic_vector(TOTAL_BIT-1 downto 0);
signal si_count : integer range 0 to 15 := 0;

begin

	-- 主過程
	main: process(clk, reset_n)
	begin
		if reset_n = '0' then
			-- 信號監測器復位信號
			reset_dt <= '1';
			-- 其他模塊的復位和使能信號
			reset_parts <= '0';
			ce_parts <= '0';
			-- 移位寄存器輸入
			sel_si <= '0';
			-- 波特率發生器和計數器的時鐘選擇信號
			sel_clk <= '0';
			-- 奇偶校驗器的輸入
			sel_pv <= '0';
			-- 選擇TxD輸出
			sel_out <= '0';
			-- 與CPU之間的接口信號
			send_over <= '0';
			recv <= '0';
			error <= '0';	 
			recv_bus <= (others => '0');
			
			-- 狀態機
			state <= UART_IDLE;
			
			-- 串行加載的計數
			si_count <= 0;
		elsif rising_edge(clk) then
			case state is
				-- 空閑狀態
				when UART_IDLE =>
				-- 當信號監測器監測到數據時,new_data變為'1'
				if new_data = '1' then
					-- 復位子模塊
					reset_parts <= '0';
					-- 子模塊使能無效
					ce_parts <= '0';
					-- 選擇移位寄存器串行輸入為RxD
					sel_si <= '1';
					-- 選擇移位寄存器的時鐘為波特率始終
					-- 選擇計數器的時鐘為波特率發生器的指示信號
					sel_clk <= '0';
					-- 使得輸出保持為'1'
					sel_out <= '0';
					-- 設置奇偶校驗的數據源為數據發送總線
					sel_pv <= '1';
					-- 改變狀態為接收
					state <= UART_RECV;
				-- 當send信號變為'1',表示CPU要求發送數據
				elsif send = '1' then
					-- 復位子模塊
					reset_parts <= '0';
					-- 子模塊使能無效
					ce_parts <= '0';
					-- 選擇移位寄存器串行輸入為串行加載序列
					sel_si <= '0';
					-- 選擇移位寄存器的時鐘為波特率始終
					-- 選擇計數器的時鐘為波特率發生器的指示信號
					sel_clk <= '0';
					-- 使得輸出保持為'1'
					sel_out <= '0';
					-- 設置奇偶校驗的數據源為數據發送總線
					sel_pv <= '0';
					
					-- 初始化串行加載序列的索引變量
					si_count <= TOTAL_BIT-1;
					
					-- 改變狀態為加載
					state <= UART_LOAD;
				else
					-- 停止對信號監測器的復位
					reset_dt <= '1';
				end if;

				-------- 數據加載和發送狀態--------
					-- 加載狀態
				when UART_LOAD =>
				-- 如果overflow信號為'1',表示數據加載完成
				if overflow = '1' then
					-- 復位子模塊
					reset_parts <= '0';
					-- 子模塊使能信號無效
					ce_parts <= '0';
					-- 選擇移位寄存器串行輸入為串行加載序列
					sel_si <= '0';
					-- 選擇移位寄存器的時鐘為波特率始終
					-- 選擇計數器的時鐘為波特率發生器的指示信號
					sel_clk <= '0';
					-- 使得輸出保持為'1'
					sel_out <= '0';
					-- 設置奇偶校驗的數據源為數據發送總線
					sel_pv <= '0';
					
					-- 改變狀態為發送
					state <= UART_SEND;
				else
					-- 選擇移位寄存器的時鐘為系統時鐘
					-- 選擇計數器的時鐘為系統時鐘
					sel_clk <= '1';
					-- 通過增加si_count,生成串行加載序列
					if not(si_count = TOTAL_BIT-1) then
						si_count <= si_count+1;
					else
						si_count <= 0;
					end if;
					-- 子模塊復位信號無效
					reset_parts <= '1';
					-- 子模塊使能信號有效
					ce_parts <= '1';
				end if;

				-- 發送狀態
				when UART_SEND => 
				
				-- 選擇輸出為TxD
				sel_out <= '1';
				-- 如果overflow為'1',表示發送完成
				if overflow = '1' then	
					-- 輸出發送完成的指示信號
					send_over <= '1';
					
					-- 改變狀態為發送完成
					state <= UART_END_SEND;
				else
					-- 子模塊復位信號無效
					reset_parts <= '1';
					-- 子模塊使能信號有效
					ce_parts <= '1';
				end if;				
				
				-- 發送完成狀態
				when UART_END_SEND =>
				-- 子模塊使能信號無效
				ce_parts <= '0';
				-- 復位信號監測器
				reset_dt <= '0';
				-- 恢復發送完成指示信號
				send_over <= '0';
				
				-- 改變狀態為空閑
				state <= UART_IDLE;				
				
				-------- 數據接收狀態--------
				-- 接收狀態
				when UART_RECV =>
				-- 如果overflow變為"1",表示接收完成
				if overflow = '1' then
					-- 輸出接收指示信號
					recv <= '1';		  
					-- 總線數據輸出
					recv_bus <= regs(DATA_BIT downto 1);
					-- 改變狀態為接收完成
					state <= UART_END_RECV;
				else
					-- 子模塊復位信號無效
					reset_parts <= '1';
					-- 子模塊使能信號有效
					ce_parts <= '1';
				end if;
				
				-- 接收完成狀態
				when UART_END_RECV =>
				-- 進行奇偶校驗
				if not(regs(0) = parity) then
					error <= '1';
				end if;
				-- 子模塊使能信號無效
				ce_parts <= '0';
				-- 復位信號監測器
				reset_dt <= '0';
				-- 恢復接收完成指示信號
				recv <= '0';
				
				-- 改變狀態為空閑
				state <= UART_IDLE;
				
				-- 如果產生未知狀態,輸出錯誤信息
				when others =>
				error <= '1';
				
				-- 恢復到空閑狀態
				state <= UART_IDLE;
			end case;
		end if;
	end process;	
	
	-- 生成串行加載序列
	send_buffer: process(send_bus, parity)
	begin							
		-- 存儲起始位
		send_buf(0) <= '0';
		-- 存儲數據位
		send_buf(DATA_BIT downto 1) <= send_bus(DATA_BIT-1 downto 0);
		-- 存儲奇偶校驗位和停止位
		if PARITY_RULE = ODD or PARITY_RULE = EVEN then
			send_buf(DATA_BIT+1) <= parity;
			send_buf(TOTAL_BIT-1 downto DATA_BIT+2) <= (others => '1');
		else
			send_buf(TOTAL_BIT-1 downto DATA_BIT+1) <= (others => '1');
		end if;	 
	end process;
	
	-- 串行輸入選擇
	si_switch: process(reset_n, si_count)
	begin
		-- 復位
		if reset_n = '0' then
			send_si <= '1';
		else
			-- 將send_buf里面的數據送到send_si端口上
			send_si <= send_buf(si_count);
		end if;
	end process;

end uart_core;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99re这里都是精品| 天天综合色天天| 欧美变态口味重另类| 欧美精品三级日韩久久| 欧美日韩免费观看一区二区三区| 91麻豆自制传媒国产之光| 国产·精品毛片| thepron国产精品| jlzzjlzz亚洲女人18| gogogo免费视频观看亚洲一| 成人免费精品视频| 91亚洲永久精品| 欧美性感一区二区三区| 色悠久久久久综合欧美99| 色狠狠一区二区| 欧美丝袜自拍制服另类| 欧美精选在线播放| 日韩一区二区在线观看| 欧美xxxx老人做受| 国产精品美女久久久久久久久久久| 国产三级欧美三级| 亚洲免费在线电影| 亚洲高清一区二区三区| 日本视频一区二区| 国产成人鲁色资源国产91色综| 麻豆精品视频在线观看免费 | 国产成人午夜99999| 国产大陆a不卡| 色就色 综合激情| 欧美一区三区四区| 国产三级三级三级精品8ⅰ区| 国产精品色在线观看| 依依成人精品视频| 蜜臀精品一区二区三区在线观看 | 国产综合久久久久久久久久久久| 国产成人精品网址| 精品视频一区二区不卡| 精品国偷自产国产一区| 中文字幕在线视频一区| 亚洲成av人片在线观看无码| 激情五月婷婷综合网| 91丨九色丨尤物| 日韩一二三区视频| 亚洲精品中文在线观看| 麻豆精品视频在线观看免费| jiyouzz国产精品久久| 日韩午夜中文字幕| 国产精品国产自产拍高清av | 亚洲图片欧美激情| 美女性感视频久久| 色婷婷av一区二区三区软件| 日韩欧美另类在线| 亚洲一区二区av在线| 国产一区二区三区免费看| 日本精品免费观看高清观看| 日韩一二三四区| 一区二区三区中文字幕| 粉嫩aⅴ一区二区三区四区五区 | 裸体健美xxxx欧美裸体表演| 91欧美激情一区二区三区成人| 精品国产乱码91久久久久久网站| 亚洲一区二区三区免费视频| 成人性生交大片免费看中文| 7777女厕盗摄久久久| 一区二区三区四区视频精品免费| 国产在线精品一区在线观看麻豆| 欧美日韩成人综合| 亚洲精品第1页| aaa亚洲精品| 国产欧美综合在线| 国产乱子轮精品视频| 欧美一二三四区在线| 天天色天天操综合| 欧美年轻男男videosbes| 中文字幕日韩一区| 不卡av免费在线观看| 久久久99久久| 粉嫩av一区二区三区粉嫩| 国产无遮挡一区二区三区毛片日本| 日本va欧美va欧美va精品| 制服丝袜亚洲播放| 婷婷亚洲久悠悠色悠在线播放| 欧美影院精品一区| 午夜精品久久久久久久久久久| 在线观看免费一区| 亚洲成人av在线电影| 欧美日韩www| 久久国内精品视频| 一区二区三区四区在线免费观看| 99re成人精品视频| 伊人一区二区三区| 欧美久久久久久久久中文字幕| 亚洲va天堂va国产va久| 欧美日高清视频| 美腿丝袜亚洲三区| 久久九九久久九九| 91猫先生在线| 亚洲成人资源在线| 日韩欧美第一区| 国产乱码精品1区2区3区| 国产精品美女一区二区三区 | 91精品一区二区三区在线观看| 午夜精品久久久久久久99水蜜桃 | 亚洲国产精品精华液ab| 国产成人综合在线| 亚洲乱码一区二区三区在线观看| 在线免费观看日本欧美| 午夜影院在线观看欧美| 精品播放一区二区| 日韩欧美一级精品久久| 国产suv精品一区二区三区| 亚洲乱码中文字幕| 欧美一级高清片| 97久久超碰精品国产| 日欧美一区二区| 欧美激情综合五月色丁香小说| 欧美亚洲免费在线一区| 国产黑丝在线一区二区三区| 一区二区三区欧美在线观看| 日韩一区二区三区精品视频| 丰满少妇久久久久久久| 三级欧美韩日大片在线看| 国产欧美日韩不卡免费| 欧美欧美欧美欧美首页| aaa欧美大片| 久久99国产精品尤物| 亚洲综合成人网| 国产日韩欧美电影| 欧美一区二区三区喷汁尤物| 97超碰欧美中文字幕| 黄页网站大全一区二区| 亚洲成人激情自拍| 亚洲精品国产一区二区精华液| 精品国产乱码久久久久久闺蜜| 欧美综合久久久| 懂色av中文一区二区三区| 伦理电影国产精品| 五月天亚洲婷婷| 国产精品热久久久久夜色精品三区 | 91浏览器打开| 亚洲欧美激情在线| 国产日韩影视精品| 亚洲特黄一级片| 91精品欧美一区二区三区综合在| 色综合中文综合网| 亚洲18色成人| 中文在线一区二区| 91精品国产aⅴ一区二区| 成人av免费在线观看| 亚洲最新在线观看| 亚洲精品一卡二卡| 国产喷白浆一区二区三区| 欧美一区二区三区电影| 99久久99久久免费精品蜜臀| 国产一区激情在线| 美女脱光内衣内裤视频久久影院| 亚洲美女屁股眼交3| 中文av一区二区| 久久网这里都是精品| 欧美区视频在线观看| 在线观看一区二区精品视频| 成人理论电影网| 国产美女精品人人做人人爽| 一区二区在线看| 亚洲一区二区av在线| 亚洲免费观看高清完整| 中文字幕第一区二区| 精品欧美久久久| 久久九九全国免费| 久久亚洲一级片| 精品福利二区三区| 91麻豆精品国产91| 欧美精品一区视频| 精品国产凹凸成av人网站| 欧美一级日韩一级| 日韩欧美一区在线| 91精品国产综合久久精品性色| 色视频成人在线观看免| 欧美性受xxxx黑人xyx| 在线观看日韩一区| 欧美三级日韩三级国产三级| 日韩视频免费直播| 久久先锋影音av鲁色资源网| 久久久国产精品麻豆| 久久男人中文字幕资源站| 久久精品人人做| 国产精品久线观看视频| 亚洲欧洲日本在线| 日韩二区在线观看| 久久99热这里只有精品| 韩国成人在线视频| 99在线精品观看| 日韩一级视频免费观看在线| 精品国产乱码久久久久久图片 | 秋霞午夜鲁丝一区二区老狼| 久久精品国产精品青草| 色综合久久88色综合天天6| 欧美少妇bbb| 欧美精品一区二区三区蜜桃| 中文字幕av一区 二区|