基于vhdl的rs232串口通信控制器word格式内容摘要:
d_logic。 串行数据接收端 txd : OUT std_logic。 串行数据 发送端 en : OUT std_logic_vector(5 downto 0)。 数码管使能 seg_data : OUT std_logic_vector(7 DOWNTO 0)。 数码管数据 key_input : IN std_logic 按键输入 )。 END UART。 ARCHITECTURE arch OF UART IS //////////////////inner reg//////////////////// SIGNAL div_reg : std_logic_vector(15 DOWNTO 0)。 分频计数器,分频值由波特率决定。 分频后得到频率 8 倍波特率的时钟 SIGNAL div8_tras_reg : std_logic_vector(2 DOWNTO 0)。 该寄存器的计数值对应发送时当前位于的时隙数 SIGNAL div8_rec_reg : std_logic_vector(2 DOWNTO 0)。 寄存器的计数值对应接收时当前位于的时隙数 SIGNAL state_tras : std_logic_vector(3 DOWNTO 0)。 发送状态寄存器 SIGNAL state_rec : std_logic_vector(3 DOWNTO 0)。 接受状态寄存器 SIGNAL clkbaud_tras : std_logic。 以波特率为频率的发送使能信号 SIGNAL clkbaud_rec : std_logic。 以波特率为频率的接受使能信号 SIGNAL clkbaud8x : std_logic。 以 8 倍波特率为频率的时钟,它的作用是将发送或接受一个 bit 的时钟周期分为 8个时隙 SIGNAL recstart : std_logic。 开始发送标志 SIGNAL recstart_tmp : std_logic。 开始接受标志 SIGNAL trasstart : std_logic。 SIGNAL rxd_reg1 : std_logic。 接收寄存器 1 SIGNAL rxd_reg2 : std_logic。 接收寄存器 2,因为接收数据为异步信号,故用两级缓存 SIGNAL txd_reg : std_logic。 发送寄存器 SIGNAL rxd_buf : std_logic_vector(7 DOWNTO 0)。 接受数据缓存 SIGNAL txd_buf : std_logic_vector(7 DOWNTO 0)。 发送数据缓存 SIGNAL send_state : std_logic_vector(2 DOWNTO 0)。 每次按键给 PC 发送 Wele字符串,这是发送状态寄存器 SIGNAL t_delay : std_logic_vector(19 DOWNTO 0)。 延时去抖计数器 SIGNAL start_delayt : std_logic。 开始延时计数标志 SIGNAL key_entry1 : std_logic。 确定有键按下曛 ? SIGNAL key_entry2 : std_logic。 确定有键按下标志 ////////////////////////////////////////////// CONSTANT div_par : std_logic_vector(15 DOWNTO 0) := 0000000101000101。 分频参 数,其值由对应的波特率计算而得,按此参数分频的时钟频率是波倍特率的 8 倍,此处值对应 9600 的波特率,即分频出的时钟频率是 9600*8 SIGNAL txd_xhdl3 : std_logic。 BEGIN en =111110。 7 段数码管使能信号赋值 txd_xhdl3 = txd_reg。 txd = txd_xhdl3。 PROCESS(clk,rst) BEGIN IF ( rst = 39。 139。 ) THEN 如果重新开始 t_delay = 00000000000000000000。 start_delayt = 39。 039。 ELSIF(clk39。 EVENT AND clk=39。 139。 )THEN 否则在时钟上升沿 IF (start_delayt = 39。 139。 ) THEN 每 800000 次,检测一次是否有按键按下 IF (t_delay /= 00001100001101010000) THEN t_delay = t_delay + 00000000000000000001。 每次时钟到来加 1 ELSE t_delay = 00000000000000000000。 start_delayt = 39。 039。 END IF。 ELSE IF (( key_input=39。 139。 ) AND (t_delay = 00000000000000000000)) THEN start_delayt = 39。 139。 END IF。 END IF。 END IF。 END PROCESS。 PROCESS(clk,rst) BEGIN IF ( rst = 39。 139。 ) THEN key_entry1 = 39。 039。 ELSIF(clk39。 EVENT AND clk=39。 139。 )THEN IF (key_entry2 = 39。 139。 ) THEN 如果 key2=1 key_entry1 = 39。 039。 有键输入。 ELSE 如果 key2=0, IF (t_delay = 00001100001101010000) THEN 检测键输入 IF (NOT key_input = 39。 139。 ) THEN 如果没有键输入 key_entry1 = 39。 139。 END IF。 END IF。 END IF。 END IF。 END PROCESS。 PROCESS(clk,rst) BEGIN IF ( rst = 39。 139。 ) THEN div_reg = 0000000000000000。 ELSIF(clk39。 EVENT AND clk=39。 139。 )THEN div_reg 是某个延时 IF (div_reg = div_par 0000000000000001) THEN div_reg = 0000000000000000。 ELSE div_reg = div_reg + 0000000000000001。 END IF。 END IF。 END PROCESS。 PROCESS(clk,rst) 分频得到 8倍波特率的时钟 BEGIN IF ( rst = 39。 139。 ) THEN clkbaud8x = 39。 039。 ELSIF(clk39。 EVENT AND clk=39。 139。 )THEN IF (div_reg = div_par 0000000000000001) THEN clkbaud8x = NOT clkbaud8x。 产生时钟脉冲 END IF。 END IF。 END PROCESS。 PROCESS(clkbaud8x,rst) BEGIN IF ( rst = 39。 139。 ) THEN div8_rec_reg = 000。 ELSE IF(clkbaud8x39。 EVENT。基于vhdl的rs232串口通信控制器word格式
相关推荐
_logic。 signal qh1_con60v,ql1_con60v,qh2_con60v:std_logic_vector(3 downto 0)。 signal ql2_con60v,qh3_con24v,ql3_con24v:std_logic_vector(3 downto 0)。 begin vcc=39。 139。 p1:t2 port map(vcc,clk,t)。 p2
源。 6) 闸门时间和时标:由标准频率分频或倍频产生, 供测量时选择。 7) 显示方式:显示的位数、显示时间等。 8) 输出:输出哪种标准信号,输出信号的电平。 编码方式。 数字频率计的实现原理 数字频率计的基本测试功能有:测试频率、测试周期、测试时间间隔、测试计数、测试频率比、测试自较等。 要完成诸多的测试功能,这就要求数字频率计具有积木式的电路结构,如图 4- 1所示。 [1] 图 41
可以跳过这一步,只在布线完成以后,进行时序仿真)。 ( 3) 逻辑综合:将源文件调入逻辑综合软件进行综合,即把语言综合成 最简的布尔表达式和信号的连接关系。 逻辑综合软件会生成 .edf( edif)的 EDA工业标准文件。 ( 4) 布局布线:将 .edf 文件调入 PLD 厂家提供的软件中进行布线,即把设计好的逻辑安放到 PLD/FPGA 内。 ( 5) 编程下载:确认仿真无误后
不必每次都从头再来,只要在更高层次上把 IP 模块组合起来,就能达到事半功倍的效果。 这样,设计人员自行开发的 IP 模块在集成电基于 VHDL 的 HDB3 码编码器与解码器的设计 EDA 辅助设计工具的介绍 5 路设计中占有重要的地位。 因此本毕业设计采用 VHDL 语言设计一个 完善的HDB3 码编、译码器。 EDA 工具 QUARTUSⅡ [] QUARTUSⅡ 软件是美国
信号的影响,改善系统性能。 带死区的数字 PID 算法 在许多实际的控制系统中,并不要求被控量十分精确地与设定值相等,完全无差,而是容许偏差在一定范围内变化。 在这种情况下,计算机控制中为了避免控制动作过于频繁,以消除由于执行机构或阀门的频繁动作所引起的系统振荡,有时采用所谓带死区的 PID 算法,也称带不灵敏区的算法。 该算法是在原 PID 算法的前面增加一个不灵敏区的非线性环节来实现的,即
SS2。 SSSS2 可对三个数码管进行片选,使它们分别亮。 A、 B、 C接段选,以控制数码管显示什么数字。 程序如下: module show(A,B,C,clk,Q,ss1,ss0)。 input[3:0] A,B,C。 input clk。 output[6:0] Q。 output ss1,ss0。 reg[1:0] M。 reg ss0,ss1。 reg[6:0] Q。