乐鑫科技数字芯片2020

(1)序列发生器,产生周期性的"0010110111"序列

module xlgen (clk,rst,Q);input clk ;
input rst ;output Q ;
reg Q ;
reg [9:0] Q_r ;always @( posedge clk or posedge rst)    beginif (rst == 1) beginQ <= 1'b0;Q_r <= 10'b0010110111;endelse  begin Q <= Q_r[9];Q_r <= Q_r<<1;//左移    Q_r[0] <=Q;//循环end      endendmodule

(2)饮料售卖机

首先画出FSM,第一步定义状态机的输入输出和状态,要记住每次只能投入一个硬币

输入有三个:a和b,其中a为投入5分的硬币,b为投入10分的硬币,c为选择的饮料类型,c为0选择饮料B,为1选择饮料A;

输出有三个:x,y,z,其中x为输出5分的饮料B,y为输出10分的饮料,z为找零5分; 

去抖动模块:

module qu_dou ( clk ,rst , a ,b  );input            clk ;
input            rst ;      
input            a ;output   reg       b ;reg        [31:0]    cnt ;
//reg             clkout ;
always @ ( posedge clk or negedge rst )begin if ( rst == 1'b0 )begincnt <= 0 ;b <= 0;endelse  begin  if ( a==1'b1 ) beginif ( cnt >= 32'd3000000 ) b <= 1 ;else cnt <= cnt + 1'b1 ;endelse beginb <= 1'b0 ;cnt <= 0 ;endendendendmodule

module machine(clk,rst,a,b,c,x,y,z);input clk,rst;input a,b;input [1:0] c;//01为5分饮料,10为10分饮料output reg x,y,z;parameter s0=2'b00,s1=2'b01,s2=2'b10,s3=2'b11;reg [1:0] cs,ns;always @(posedge clk or negedge rst)beginif(~rst)cs <= s0;elsecs <= ns;endreg [1:0] coin_in;reg [1:0] drink_in;always @(*)beginif(~rst)ns = s0;coin_in = 0;drink_in = 0;elsebegincase(cs)s0:beginif({a,b} == 2'b01)//投入10分硬币 beginns = s1;coin_in = 2'b10;endelse if({a,b} == 2'b10) beginns = s1;coin_in = 2'b01;endelsens = s0;endendcases1:beginif(c == 2'10)//选择10分的饮料begindrink_in = 2'b10;ns = s2;endelse if(c == 2'b01)begindrink_in = 2'b01;ns = s2;endelsens = s0;ends2:beginif(coin_in == 2'b10 || coin_in = 2'b01)ns = s3;elsens = s0;ends3:beginif({a,b} == 2'b01)//投入10分硬币 beginns = s1;coin_in = 2'b10;endelse if({a,b} == 2'b10) beginns = s1;coin_in = 2'b01;endelsens = s0;endendalways @(posedge clk or negedge rst)beginif(~rst)begin{x,y,z}=3'd0;endelse if(cs == s3)beginif(coin_in = 2'b10 && drink_in = 2'b10){x,y,z}=3'b010;else if(coin_in = 2'b10 && drink_in = 2'b01){x,y,z}=3'b101;else if(coin_in = 2'b01 && drink_in = 2'b01){x,y,z}=3'b100;else if(coin_in = 2'b10 && drink_in = 2'b10){x,y,z}=3'b001;else{x,y,z}=3'd0;endend
endmodule

 

题目要求:将一个串行执行的C语言算法转化为单拍完成的并行可综合verilog

C语言源码如下:

unsignedcharcal_table_high_first(unsignedcharvalue)
{unsigned char i ;
unsigned  char checksum = value ; for (i=8;i>0;--i){if (check_sum& 0x80){check_sum = (check_sum<<1) ^ 0x31;}else{check_sum = (check_sum << 1);}}return check_sum;

 算法C语言实现:

#include<stdio.h>
int main(){unsignedchar cal_table_high_first(unsignedchar value); unsignedchar data;for (unsignedchar i = 0; i < 16;++i){data= cal_table_high_first(i);printf("value =0x%0x:check_sum=0x%0x  \n", i, data);}getchar();
}unsignedchar cal_table_high_first(unsignedchar value)
{unsignedchar i;unsigned  char check_sum = value;for (i = 8; i > 0;--i){if (check_sum &0x80){check_sum= (check_sum << 1) ^ 0x31;}else{check_sum= (check_sum << 1);}}return check_sum;
}

该算法逻辑如下:

输入一个8bit的数,首先判断最高位是否为1,如果为1则左移一位,并且和8‘b00110001异或;如果最高位不为1则左移一位。此过程执行8次

此时我们来看一下异或操作的真值表

我们可以看出:任何数与0异或都等于它本身,即0^x=x。所以我们可以把算法流程变换为:

8'h31 = 8'b00110001, 8'h00 = 8'b00000000,设左移前最高位为M,可以将判断左移前最高位是否为1的过程省略,直接与8'b00MM000M异或,此时流程图可以简化为:

由此,我们可以将循环解开,设输入为一个8bit数C[7:0],下面为解循环过程:

根据上述结果,可以用verilog描述:

module loop1(input clk,input rst_n,input [7:0] check_sum,output reg [7:0] check_sum_o
);
//reg [7:0] check_sum_o;
always @ (posedge clk or negedge rst_n)if(!rst_n)begincheck_sum_o<= 8'h0;endelsebegincheck_sum_o[7]<= check_sum[3]^check_sum[2]^check_sum[5];check_sum_o[6]<= check_sum[2]^check_sum[1]^check_sum[4]^check_sum[7];check_sum_o[5]<= check_sum[1]^check_sum[7]^check_sum[0]^check_sum[3]^check_sum[6];check_sum_o[4]<= check_sum[7]^check_sum[0]^check_sum[3]^check_sum[6];check_sum_o[3]<= check_sum[3]^check_sum[7]^check_sum[6];check_sum_o[2]<= check_sum[2]^check_sum[6]^check_sum[5];check_sum_o[1]<= check_sum[1]^check_sum[5]^check_sum[4]^check_sum[7];check_sum_o[0]<= check_sum[0]^check_sum[4]^check_sum[3]^check_sum[6];endendmodule

驱动4x4矩阵键盘的思路

图1 4x4矩阵键盘的SCH(箭头表示输入输出方向)

如图所示,将ROW[3:0]设为输入,COL[3:0]设为输出。如果没有任何键被按下,则ROW[3:0]一直被上拉为高电平。只有当有键被按下,且COL[3:0]中有低电平输出,ROW[3:0]中才有可能有低电平输入,也可说是被动地输入

请实现对(1011001)2的序列检测功能,模块每拍并行输入2bit,且顺序为高位先输入,当检测到序列,输出一拍高电平脉冲。请用Verilog描述该模块

相当于检测10 11 00 1x,状态转换图

 

module sequence_check_2bit(clk,rst,seq_in,out_pulse);input clk,rst;input [1:0] seq_in;output reg out_pulse;parameter s0=3'b000,s1=3'b001,s2=3'b010,s3=3'b011,s4=3'b100;reg [1:0] cs,ns;always @(posedge clk or negedge rst)beginif(~rst)begincs <= 0;ns <= 0;endelsebegincs <= ns;endendalways @(*)beginif(rst)ns = s0;elsebegincase(cs)s0:beginif(seq_in == 2'b10)ns = s1;elsens = s0;ends1:beginif(seq_in == 2'b10)ns = s1;else if(seq_in == 2'b11)ns = s2;elsens = s0;ends2:beginif(seq_in == 2'b00)ns = s3;else if(seq_in == 2'b10)ns = s1;elsens = s0;ends3:beginif(seq_in == 2'b10 || seq_in == 2'b11)ns = s4;elsens = s0;ends4:beginif(seq_in == 2'b10)ns = s1;elsens = s0;enddefault: ns = s0;endcaseendendalways @(posedge clk or negedge rst)beginif(~rst)out_pulse <= 0;else out_pulse <=(cs == s4)?1'b1:1'b0;end
endmodule

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/33882.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

乐鑫科技数字IC提前批2021

整理乐鑫科技2021届招聘的数字IC提前批笔试题&#xff0c;并做了部分答案和解析&#xff0c;有问题的地方欢迎一起探讨。 一&#xff0e;单选题 1.关于跨时钟域电路的设计&#xff0c;以下说法正确的是: A: 信号经两级D触发器同步后即可进行跨时钟域传递 B: 跨时钟域电路存在亚…

乐鑫科技2020数字芯片

摘抄至数字芯片实验室 1、设计一个序列信号发生器电路&#xff0c;能在CLK信号作用下周期性输出“0010110111”的序列信号 2、设计一个自动饮料售卖机&#xff0c;共有两种饮料&#xff0c;其中饮料A每个10分钱&#xff0c;饮料B每个5分钱&#xff0c;硬币有5分和10分两种&a…

乐鑫科技,活跃在国际舞台上的中国芯

众多国内外开发者在社交平台讨论乐鑫产品 说到中国芯片&#xff0c;大家往往很容易先联想到“国产替代”的概念。不过&#xff0c;“国产替代”这四个字早已不足以概括国产芯片的快速发展。乐鑫科技 (688018.SH) 作为来自中国的领先 AIoT 平台企业&#xff0c;在产品设计与研发…

Matter 系列 #9|乐鑫 Matter 预配置服务加速设备生产

乐鑫 Matter 系列文章 #9 目录 Matter 预配置服务 1. 设备认证 (Device Attestation) 2. 独特性 (Uniqueness) 3. 安全性 (Security) 联系我们​​​​​​​ 如今&#xff0c;物联网行业蓬勃发展&#xff0c;大量市场参与者正在积极地构建 Matter 智能设备。 乐鑫一直致…

基于乐鑫 ESP32 的智能手表

拥有一块自己制作的智能手表是不是听起来就很酷&#xff1f;工程师 Pcadic 基于乐鑫 ESP32-PICO-D4 实现了这个想法&#xff01;他开发了一款能够与我们的手机或任何其他设备互联的智能手表 ESP32-Pico-Watch。 ESP32-Pico-Watch 支持 Wi-Fi、蓝牙、Mesh&#xff0c;拥有 1 个振…

乐鑫科技推出 ESP-LEDStrip 智能律动灯方案

人们在丰富多彩的日常生活中对照明设备的功能和效果提出了更高要求&#xff1a;它们不仅要具备基础照明功能&#xff0c;还需要在本地/远程控制、个性化设置、光效调节等多方面提升用户的智能使用体验&#xff0c;甚至在不同场景中发挥渲染气氛、提升装饰品味、制造视觉冲击等作…

乐鑫科技笔试总结

1 CPU包括哪三部分&#xff1f; 运算器&#xff0c;控制器&#xff0c;存储器构成 1、运算器 运算器的基本功能是完成对各种数据的加工处理&#xff0c;例如算术四则运算&#xff0c;与、或、求反等逻辑运算&#xff0c;算术和逻辑移位操作&#xff0c;比较数值&#xff0c;…

乐鑫科技亮相德国嵌入式展 Embedded World 2023!

3 月 14 日&#xff0c;德国纽伦堡嵌入式展 Embedded World 2023 火热启幕。本届 Embedded World 主题为 “embedded. responsible. sustainable”&#xff0c;乐鑫科技 (688018.SH) 携众多 AIoT 科技成果亮相展会&#xff0c;致力于打造更智能、更互联、更绿色的物联网未来。…

乐鑫笔试题C语言,乐鑫科技2020秋招笔试题——数字IC

原题&#xff1a;请将下面这段 C 语言描述的串行处理过程&#xff0c;转换为单拍完成的并行处理&#xff0c;并用可综合的 Verilog 来描述。 unsigned char cal_table_high_first(unsigned char value) { unsigned char i; unsigned char checksum value&#xff1b; for (i8;…

乐鑫科技2020届秋招-数字IC类真题

最近在牛客网刷数字IC真题&#xff0c;看到乐鑫科技2020秋招真题&#xff0c;做完发现有的人首先用c语言模拟输入输出参考模型用作verilog输入输出真值表参数&#xff0c;然后根据真值表算出输入输出各位之间的关系&#xff0c;这显然在现实笔试时是不可取的&#xff0c;时间浪…

数字IC手撕代码-乐鑫科技笔试真题(4倍频)

前言&#xff1a; 本专栏旨在记录高频笔面试手撕代码题&#xff0c;以备数字前端秋招&#xff0c;本专栏所有文章提供原理分析、代码及波形&#xff0c;所有代码均经过本人验证。 目录如下&#xff1a; 1.数字IC手撕代码-分频器&#xff08;任意偶数分频&#xff09; 2.数字I…

乐鑫科技2022笔试面试题

来源于读者投稿&#xff0c;作者来源于牛客网的 galun 。 投递方式&#xff1a;内推。 岗位&#xff1a;嵌入式软件实习生。 个人情况&#xff1a;本科双非电子信息工程&#xff0c;硕士华五软件工程研一在读&#xff1b;本科做过一些很水的项目 &#xff0c;也拿项目搞了一些奖…

chatgpt赋能python:Python下载模块并安装教程

Python下载模块并安装教程 Python 作为一门广泛应用于各个领域的编程语言&#xff0c;具有易学易用、生态丰富等诸多优势&#xff0c;然而为了方便我们进行某些操作&#xff0c;会需要下载一些第三方的模块。因此&#xff0c;本文将介绍如何下载模块并安装。 下载模块 下载模…

Java 基础入门笔记

Java 入门基础笔记 标识符 标识符必须以 字母 _ $ 开头 大小写敏感 可包含 字母 _ $ 不能是 JAVA 的 关键字 int String 驼峰规则 javaBasicKonwledge 基本数据类型 数值型字符型布尔型整数类型(byte short int long)char 字符型true浮点型(float double)String 字符串 …

串口软件Vofa+,超好用。可用于高速采集数据直观化显示动态

&#xff08;上一次写的不够完整&#xff0c;有好多人还会遇到问题&#xff0c;我再回来完善下&#xff09; 使用背景&#xff1a; 在调试无感的无刷直流电机的应用中&#xff0c;需要高速采集3路驱动电压&#xff0c;用于检测反电动势的“过零点”。 &#xff08;其实后来接…

国内IT软件外包公司汇总(2023 最新版)!

关注、星标公众号&#xff0c;直达精彩内容 原文&#xff1a;https://sourl.cn/Y757iG 最近很多读者问我只有外包的 offer 能去吗&#xff1f; 大环境不行&#xff0c;面试太少了&#xff0c;很多本科生想进外包都没机会。非常时期&#xff0c;不需要在意那么多&#xff0c;外包…

鼎捷T100权限管控设定

文章目录 一、名称解释1.1 角色1.2 用户1.3 账号 二、权限结构2.1 权限设置作业 三、权限实作3.1 角色规划3.2 用户数据设置 一、名称解释 1.1 角色 角色代表企业中的一个职能权限集合&#xff0c;例如业务职能需要有估报价单维护、订单维护等操作权限。 角色定义操作权限如作…

聚焦装备制造行业数智化转型 鼎捷软件勇担产业先锋

国务院政府工作报告指出&#xff1a;“十四五期间加快数字化发展&#xff0c;打造数字经济新优势&#xff0c;协同推进数字产业化和产业数字化转型”。制造业数字化转型作为产业数字化的重点体现&#xff0c;将成为未来中国制造业实现新发展的焦点所在。作为国民经济的支柱产业…

畅捷通T+和旺店通·企业奇门单据接口对接

数据源平台:旺店通企业奇门 慧策最先以旺店通ERP切入商家核心管理痛点——订单管理&#xff0c;之后围绕电商经营管理中的核心管理诉求&#xff0c;先后布局流量获取、会员管理、仓库管理等其他重要经营模块。慧策的产品线从旺店通ERP起步&#xff0c;向前向后延伸&#xff0c…

阿里云联合鼎捷软件发布云上数字工厂解决方案,实现云MES系统本地化部署

5月18日&#xff0c;阿里云与鼎捷软件联合主办的“云上数字工厂与中小企业数字化转型创新论坛”于线上举行。本次创新论坛上&#xff0c;阿里云弹性计算解决方案及运营负责人胡晓博与鼎捷软件上海事业部总经理袁能飞共同宣布“鼎捷MES&阿里云云盒云上数字工厂解决方案”正式…