技术标签: fpga开发 嵌入式硬件 verilog 单片机
串入并出移位寄存器:串行数据,经过几个时钟周期,
在移位寄存器中,最终输出并行的数据。
端口解释:
a) i_clk:串口时钟
b) i_rest:模块复位信号
c) i_data:串口输入端
d) i_ena:片选信号
e) i_full:模块输入缓冲器已满(提醒发送端停止发送)
f) o_ready:模块输出缓冲器已准备好数据(提醒并行接收端可以接收数据了)
g) o_cout[7:0]:并行数据输出端
h) i_ack:并行接端数据接收完成反馈信息(这时如果模块输入缓冲区有已接收的数据则可将数据传送至输出缓冲区进行发送)
module SIPO(o_ready,o_cout,i_ack,i_full,i_clk,i_rest,i_data,i_ena);
output o_ready,o_cout,i_full,i_ack;
input i_clk,i_rest,i_data,i_ena;
reg i_full,o_ready,i_ack;
reg [7:0] i_buffer;
wire [7:0] o_cout;
reg [7:0] o_cout_temp,o_buffer;
reg [2:0] i_flag;
//该模块采用双缓冲机制-输入缓冲和输出缓冲,
//在输出缓冲向外并行发送数据的同时 如果输入缓冲器不满则可继续串行接收数据;
//时序逻辑电路
always @(posedge i_clk or posedge i_rest)
begin
if(i_rest)
begin
o_cout_temp<=8'b0; //输出为0
i_full<=0; //模块输入缓冲器未满
o_ready<=0; //模块输出缓冲器未准备好数据
i_buffer<=0; //输入缓冲器置0
o_buffer<= 8'b0; //输出缓冲器置0
i_ack<=0; //输出未接收完数据
i_flag<=3'b000; //标记信号为0 没准备好
i_full<=8'b0; //输入缓冲标记为0 没准备好
end
else if(i_ena) //片选信号选通
begin
if(i_ack==0) //并行端未接收完成 前9个周期
begin
if(i_full==0 & o_ready==0) //模块输入缓存器未满 输出缓冲器没做好准备
begin
if(i_flag==3'b111) //输入buffer已经满了 提醒发送端停止发送
begin
o_buffer <= i_buffer; //输出buffer赋值为输入buffer 非阻塞赋值
i_full <=1;
end
else //一次输出完成
begin
i_buffer<={
i_buffer[7:1],i_data}; //输去缓冲器置为输入缓冲器 阻塞赋值
i_flag<=i_flag + 3'b001;
end
end
else if(i_full==1 & o_ready==0)//输入buffer满了 赋值为输出buffer 非阻塞赋值
begin
o_cout_temp<=o_buffer;
o_ready<=1; //输出准备
end
else if(i_full==1 & o_ready==1) //输出buffer满了 赋值为输出
o_cout_temp<=o_buffer; // 赋值为输出
i_ack<=1; //输出有值了
i_full<=0;
end
else //并行接端数据接收完成反馈信息(这时如果模块输入缓冲区有已接收的数据则可将数据传送至输出缓冲区进行发送)
begin
if(i_full) //输入buffer满的
begin
o_buffer <= i_buffer;
o_cout_temp <= o_buffer;
i_full <= 0;
end
else
begin
i_buffer <= i_data;
i_full <=1 ;
end
end
end
else //高阻态
begin
i_full<=1'bz;
o_ready<=1'bz;
i_buffer<= 8'bz;
o_buffer<= 8'bz;
o_cout_temp<= 8'bz;
end
end
assign o_cout = o_cout_temp;
endmodule
module test_SIPO;
reg i_clk_t,i_data_t,i_rest_t,i_ena_t;
wire o_ready_t,i_ack_t,i_full_t;
reg [7:0] i_buffer_t,o_buffer_t;
wire [7:0] o_cout_t;
SIPO mySIPO(
.o_ready(o_ready_t),
.o_cout(o_cout_t),
.i_ack(i_ack_t),
.i_full(i_full_t),
.i_clk(i_clk_t),
.i_rest(i_rest_t),
.i_data(i_data_t),
.i_ena(i_ena_t));
initial
begin
i_rest_t = 1; //rest signal
i_clk_t = 0;
i_data_t = 0;
i_ena_t =0;
#10 i_rest_t = 0;
#5 i_ena_t = 1;
end
always #5 i_clk_t = ~i_clk_t;
always #10 i_data_t = {
$random}%2;
endmodule
通过数字化转型和智能化服务的提升,数字文旅为游客带来了全新的旅游体验,推动了旅游业的持续健康发展。数字文旅以数字化转型为突破口,通过提升旅游服务的智能化水平,为游客带来全新的旅游体验,引领旅游业迈向更加智能化、个性化的未来。“方案365”全新整理智慧文旅、智慧园区、数字乡村-智慧农业、智慧城市、数据治理、智慧应急、数字孪生、乡村振兴、智慧乡村、元宇宙、数据中台、智慧矿山、城市生命线、智慧水利、智慧校园、智慧工地、智慧农业、智慧旅游等300+行业全套解决方案。数字文旅的兴起正在重塑旅游发展的新格局。
实际的案例中,登录的方式有很多种,既可以是用户名,还可以是手机号,还可以是邮箱等,并且他们的登录输入入口都是一个,所以这里将实现这种接口用户表用普通的表创建一个数据表用于侧式认证功能username = models.CharField(max_length=64, verbose_name='用户名')password = models.CharField(max_length=64, verbose_name='密码')
文章浏览阅读1.4k次。以epoll-server项目为例,通过VSCODE编译并调试。该形目由CMake构建,目标在该目录下生成build目录,通过CMake生成Makefile工程到build目录下,然后在build目录下执行make命令进行编译,最后通过VSCODE进行调试。Build代码目录用VSCODE WSL模式打开该目录。在.vscode文件夹下面创建task.json。task.json{ "version": "2.0.0", "tasks": [ {.._vscode cmake 新建linux工程
文章浏览阅读1.9w次,点赞3次,收藏5次。由于在数据库发布经常需要进行文件对比,最近在使用文件比较器时,该软件不能够使用。弹出框的消息为许可证秘钥被撤销,解决该问题的方法如下: 1、找到“C:\Users\[Your User Name]\AppData\Roaming\Scooter Software\Beyond Compare 3\”目录 2、将这个目录下的所有文件都删除掉,重新打开“B..._bcompare许可证密钥已被撤销
文章浏览阅读1k次,点赞19次,收藏10次。SQL是结构化查询语言(Structured Query Language)的缩写,是一种用于管理关系型数据库系统的语言。SQL允许用户通过特定的命令来创建、查询、更新和删除数据库中的数据。SQL的起源可以追溯到20世纪70年代,当时IBM的研究员Edgar F. Codd提出了关系数据库模型的概念,并在1970年发表了一篇题为“A Relational Model of Data for Large Shared Data Banks”的论文。
文章浏览阅读2.8k次。HTML 表格HTML 表格实例:First NameLast NamePointsJillSmith50EveJackson94JohnDoe80AdamJohnson67在线实例表格这个例子演示如何在 HTML 文档中创建表格。(可以在本页底端找到更多实例。)HTML 表格表格由 标签来定义。每个表格均有若干行(由 标签定义),每行被分割为若干单元格(由 标签定义)。字母 td 指表格数..._简易表单网站源码
文章浏览阅读91次。这个其实就是从Audio_processing.h中拿出来的。APM should be placed in the signal chain as close to the audio hardware abstraction layer (HAL) as possible.APM accepts only 16-bit linear PCM audio data in frames of 10..._webrtc record level apm in level apm out level
实际的案例中,登录的方式有很多种,既可以是用户名,还可以是手机号,还可以是邮箱等,并且他们的登录输入入口都是一个,所以这里将实现这种接口用户表用普通的表创建一个数据表用于侧式认证功能username = models.CharField(max_length=64, verbose_name='用户名')password = models.CharField(max_length=64, verbose_name='密码')
C++
文章浏览阅读3.9k次。sql server查看表大小查看SqlServer 数据库中各个表多少行:SELECT A.NAME ,B.ROWS FROM sysobjects A JOIN sysindexes B ON A.id = B.id WHERE A.xtype = 'U' AND B.indid IN(0,1) ORDER BY B.ROWS DESC数据库磁盘占用量:select name, CAST(convert(float,size) * (8192.0/1024.0)/1024 AS .._查看sql表的大小
文章浏览阅读395次,点赞16次,收藏13次。指针的类型决定了,对指针解引用的时候有多大的权限(能操作几个字节)。比如:char* 的指针解引用就只能访问一个字节,而int* 的指针解引用就能访问四个字节。_c %zu
文章浏览阅读1.4k次。F460CLK配置功能模块说明目录F460CLK配置功能模块说明CLK配置:1. DDL_ICG——初始化配置2. DDL_UTILITY——基础功能函数3.DDL_PRINT-待细化4.DDL_ADC5.DDL_AES——AES 加解密算法处理器6.DDL_CAN7. DDL_CLK8. DDL_CMP——电压比较器9. DDL_CRC10. DDL_DCU——数据计算单元11. DDL_DMAC——DMA 控制器..._f460 tmera