×¢²á µÇ¼
µç×Ó¹¤³ÌÊÀ½ç-ÂÛ̳ ·µ»ØÊ×Ò³ EEWORLDÊ×Ò³ ƵµÀ EE´óѧÌà ÏÂÔØÖÐÐÄ Datasheet רÌâ
»¹Ã»³Ô·¹µÄ¸öÈË¿Õ¼ä https://home.eeworld.com.cn/space-uid-1408075.html [ÊÕ²Ø] [¸´ÖÆ] [·ÖÏí] [RSS]
ÈÕÖ¾

·ÀÖ¹AI´óÄ£Ðͱ»ºÚ¿Í²¡¶¾ÈëÇÖ¿ØÖÆ£¨Ô­´´£©ñö˼´óÄ£ÐÍAI¿ª·¢Ì×¼þÆÀ²â4

ÒÑÓÐ 271 ´ÎÔĶÁ2024-3-19 23:18 |¸öÈË·ÖÀà:eFPGA

 

ÔÚÉè¼Æ·ÀÖ¹AI´óÄ£Ðͱ»ºÚ¿Í²¡¶¾ÈëÇÖʱ£¬ÐèÒª¿¼Âǵ½¸´ÔӵļÓÃܺͽâÃÜËã·¨ÒÔ¼°Ä£Ð͵ÄʵÏÖϸ½Ú£¬Ê×ÏÈÐèÒªÁ˽âÄ£Ð͵ĽṹºÍʵÏÖϸ½Ú¡£

WeChat_20240318141427

 

ÒÔÏÂÊÇÎÒʹÓÃPythonºÍTensorFlow 2.xʵÏÖÉî¶ÈѧϰģÐÍÍÆÀíµÄÄ£Ð͵ĽṹºÍʵÏÖϸ½Ú£º

  1. Ê×ÏÈ£¬È·±£°²×°ÁËTensorFlow 2.x¡£¿ÉÒÔʹÓÃÒÔÏÂÃüÁî°²×°TensorFlow£º

pip install tensorflow

 

  1. È»ºó£¬±àдһ¸ö¼òµ¥µÄÉî¶ÈѧϰģÐͲ¢ÊµÏÖÍÆÀí´úÂ룬ÎÒÏÖÔÚ¿ªÊ¼±àдһ¶Î½ÌµçÄÔÈçºÎ“Éî¶È˼¿¼”µÄ´úÂë¡£ÏëÏóÄãÕýÔÚѵÁ·Ò»Ö»Ãû½Ðtf.kerasµÄСºï×ÓÍæ¶à²ãÃÔ¹¬ÓÎÏ·£º

import tensorflow as tf

 

# ½ÌСºï×ӴÃÔ¹¬£ºÏÈÊÇÒ»¼äÓÐ64¸öÃÅ¡¢´ò¿ª·½Ê½¶¼ÊÇÓÃÁ¦ÍƵķ¿¼ä£¨¼¤»îº¯ÊýΪrelu£©

# È»ºóÊÇÒ»ÅÅ10ÉÈ×Ô¶¯·ÖÀàÃÅ£¨¼¤»îº¯ÊýΪsoftmax£©

def create_model():

    model = tf.keras.models.Sequential([

        tf.keras.layers.Dense(64, activation='relu'),  # µÚÒ»²ã·¿¼ä

        tf.keras.layers.Dense(10, activation='softmax')  # µÚ¶þ²ã·ÖÀàÃÅ

    ])

 

    # ¸øСºï×Ó°²ÅÅһλ˽È˽ÌÁ·£¨adamÓÅ»¯Æ÷£©ºÍÒ»Ì×ÆÀ·Ö¹æÔò£¨Ëðʧº¯ÊýºÍ׼ȷÂÊÖ¸±ê£©

    model.compile(optimizer='adam',

                  loss='sparse_categorical_crossentropy',

                  metrics=['accuracy'])

 

    # ѵÁ·Íê±Ï£¬°ÑÕâÖ»¶®ÃÔ¹¬Íæ·¨µÄСºï×ÓËͳöÀ´

    return model

 

# °Ñ¸Õ¸ÕѵÁ·ºÃµÄСºï×ÓÁì»Ø¼Ò

model = create_model()

 

# ¸øСºï×ÓһЩÏßË÷£¨ÊäÈëÊý¾Ý£©£¬ÈÃËüÔ¤²â³ö¿ÚÔÚÄÄ

input_data = [[0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]]

 

# Сºï×Ó¿ªÊ¼ÔÚÄÔº£ÀïÄ£Äâ×ßÃÔ¹¬£¬¸ø³öÔ¤²â½á¹û

predictions = model.predict(input_data)

 

# ´òÓ¡³öСºï×Ó¶Ô³ö¿ÚµÄÔ¤²â£º“ÎÒ¾õµÃÊÇÕâÀ”

print('Predictions:', predictions)

 

WeChat_20240318141452

 

Õâ¶Î´úÂë¾ÍÏñÊÇÎÒÃÇÔÚѵÁ·Ò»Ö»´ÏÃ÷µÄAIС¶¯Îï½â¾öʵ¼ÊÎÊÌ⣬ͨ¹ý¹¹½¨Éñ¾­ÍøÂçÄ£ÐͲ¢½øÐÐÍÆÀí£¬ÈõçÄÔÒ²ÄÜÏñÈËÒ»Ñù¸ù¾ÝÊäÈëÐÅÏ¢×ö³ö¾ö²ß¡£
ÔÚÉÏÊöʾÀýÖУ¬ÎÒ´´½¨ÁËÒ»¸ö¼òµ¥µÄÉî¶ÈѧϰģÐÍ£¬¸ÃÄ£Ð;ßÓÐÁ½¸öÈ«Á¬½Ó²ã¡£È»ºó£¬¼ÓÔØÁ˸ÃÄ£ÐͲ¢ÎªÆäÌṩÁËÊäÈëÊý¾Ý¡£×îºó£¬ÎÒÔËÐÐÁËÄ£Ð͵ÄÍÆÀí£¬²¢Êä³öÁËÔ¤²â½á¹û¡£´ËÍ⣬»¹ÐèÒª¿¼ÂÇÆäËûÒòËØ£¬ÈçÄ£Ð͵ÄÓÅ»¯Æ÷¡¢Ëðʧº¯ÊýºÍÆÀ¹ÀÖ¸±êµÈ¡£

ΪÁË·ÀÖ¹AI´óÄ£Ðͱ»ºÚ¿Í²¡¶¾ÈëÇÖ¿ØÖÆ£¬Í¨³£¿ÉÒÔ²ÉÈ¡ÒÔÏ´ëÊ©£º

  1. Êý¾Ý¼ÓÃÜ£º¶ÔÄ£Ð͵ÄÊý¾Ý½øÐмÓÃÜ£¬°üÀ¨ÑµÁ·Êý¾ÝºÍÄ£ÐͲÎÊý£¬ÒÔ·ÀÖ¹Êý¾ÝÔÚ´«Êä»ò´æ´¢¹ý³ÌÖб»ÇÔÈ¡»ò´Û¸Ä¡£Ê¹Óð²È«µÄ±à³Ìʵ¼ù£¬ÈçÊäÈëÑéÖ¤¡¢Êä³ö±àÂëºÍ´íÎó´¦Àí¡£
  2. ·ÃÎÊ¿ØÖÆ£ºÉèÖÃÑϸñµÄ·ÃÎÊ¿ØÖÆ»úÖÆ£¬Ö»ÔÊÐíÊÚȨµÄÈËÔ±»òϵͳ·ÃÎÊÄ£ÐÍ¡£¶ÔÄ£ÐͽøÐа²È«¼Ó¹Ì£¬ÀýÈçÏÞÖÆÄ£Ð͵ķÃÎÊȨÏÞ¡¢Ê¹Ó÷À»ðǽµÈ¡£
  3. °²È«ÆÀ¹À£º¶¨ÆÚ½øÐа²È«ÆÀ¹ÀºÍ©¶´É¨Ã裬·¢ÏÖ²¢ÐÞ¸´Ç±Ôڵݲȫ©¶´¡£¶¨ÆÚ¸üÐÂÄ£ÐͺÍÏà¹ØÈí¼þ£¬ÒÔÐÞ¸´ÒÑÖªµÄ°²È«Â©¶´¡£
  4. Ä£Ðͼà¿Ø£ºÊµÊ±¼à¿ØÄ£Ð͵ÄÊäÈëºÍÊä³ö£¬¼ì²âÒì³£ÐÐΪ»òÒì³£Êý¾Ý£¬¼°Ê±²ÉÈ¡´ëÊ©·ÀÖ¹ÈëÇÖ¡£¶ÔÄ£ÐͽøÐмà¿Ø£¬ÒԱ㼰ʱ·¢ÏÖÒì³£ÐÐΪ¡£
  5. Ô±¹¤Åàѵ£ºÅàѵ¿ª·¢ºÍʹÓÃÄ£Ð͵ÄÈËÔ±£¬Ìá¸ßËûÃǵݲȫÒâʶ£¬±ÜÃâÈËΪÒòËص¼Öµİ²È«·çÏÕ¡£

eChat_20240318161854

 

ÒÔÏÂÊÇÎÒ±àдµÄÒ»¸ö¼òµ¥µÄPython´úÂ룬ÓÃÓÚ·ÀÖ¹AI´óÄ£Ðͱ»ºÚ¿Í²¡¶¾ÈëÇÖ¿ØÖÆ£º

import os         # ÕâÊÇÔ۵ē´ó¹Ü¼Ò”£¬×¨ÃŸºÔð¼ÒÀϵͳ£©µÄ¸÷ÖÖËöÊ£¬±ÈÈçÕÒ¸öÎļþ¡¢¿ª¸ö´°»§Ê²Ã´µÄ¡£

import sys        # °¥Ñ½£¬ÕâλÊÇ“ÕÆÃÅÈË”£¬ÕƹÜ×ÅÕû¸ö¾ç±¾£¨³ÌÐò£©µÄÔËÐл·¾³ºÍ½­ºþµØ루²ÎÊýÁÐ±í£©¡£

import time       # ʱ¼ä¾ýÉÁÁÁµÇ³¡£¡ËüÄÜ°ïÄ㾫ȷµ½ÃëµØÊýÇ®£¬Å¶²»¶Ô£¬ÊǼÆʱ¡£

 

from watchdog.observers import Observer  # ºÙºÙ£¬ÕâÊÇÎÒÃǵē¿´ÃŹ·”¼àÊÓÆ÷£¬24Сʱ²»Õ£ÑÛ¶¢×ÅÎļþ¼ÐµÄ±ä»¯£¬±ÈСÇø±£°²»¹¾¡Ö°¡£

from watchdog.events import FileSystemEventHandler  # ÕâλÊǓʼþ´¦Àí´óʦ”£¬×¨ÃÅÑо¿ÎļþϵͳµÄ·ç´µ²Ý¶¯£¬Ò»µ©ÓÐÇé¿ö£¬Á¢¿Ì»ã±¨£¡

 

class ModelSecurityHandler(FileSystemEventHandler):  # ÕâÊǸöÊØ»¤Ä£ÐÍ°²È«µÄ“±£ïÚÀà”£¬ËüµÄÈÎÎñ¾ÍÊDZ£»¤ÔÛÃǵÄAIÄ£ÐÍ¡£

    def on_modified(self, event):  # Èç¹ûÓÐÈ˶ÔÄ£ÐÍÎļþ¶¯Êֽţ¬´¥·¢ÁË"on_modified"Õâ¸ö¼¼ÄÜ£¨·½·¨£©¡£

        if event.src_path.endswith('.model'):  # ¼ì²éÊDz»ÊÇÄ£ÐÍÎļþ±»¸ÄÁË£¬¾ÍÏñ¼ì²éÊDz»ÊÇ×Ô¼Ò±¦±´±»ÃþÁËÒ»Ñù¡£

            print(f"¼ì²âµ½Ä£ÐÍÎļþ {event.src_path} ±»Ð޸ģ¬ÕýÔÚ»Ö¸´...")  # ·¢ÏÖÎÊÌâ¾ÍÂíÉϺ°»°£º“ιιι£¬Ë­¶¯ÁËÎÒµÄÄÌÀÒ£¿ÏÖÔÚ¿ªÊ¼¸´Ô­£¡”

            restore_model(event.src_path)  # È»ºó¸Ï½ôµ÷ÓÓ»¹Ô­´ó·¨”£¬°ÑÄ£Ðͻָ´Ô­×´¡£

 

def restore_model(model_path):  # ÕâÊÇ“»¹Ô­´ó·¨”µÄ¾ßÌåʵÏÖ£¬µ«Ä¿Ç°»¹ÊÇ¿Õ¿Ç×Ó£¬ÔÝʱ¼Ù×°ÔÚÖ´ÐÐÉñÃزÙ×÷...

    pass

 

def main():  # ½øÈëÖ÷Õ½³¡À²£¡

    path = sys.argv[1] if len(sys.argv) > 1 else '.'  # Ö÷½Ç³ö³¡Ç°Ïȶ¨¸öÎę̀£¨Â·¾¶£©£¬Èç¹û¹ÛÖÚ£¨Óû§£©Ö¸¶¨ÁËλÖ㬾ÍÈ¥ÄÇÀûָ¶¨£¬Ä¬ÈϾÍÔÚµ±Ç°Ä¿Â¼±íÑÝ¡£

    event_handler = ModelSecurityHandler()  # ´´½¨Ò»¸ö“±£ïÚ”½ÇÉ«¡£

    observer = Observer()  # ÔÙÕÙ»½³öÒ»Ö»“¿´ÃŹ·”¡£

    observer.schedule(event_handler, path, recursive=True)  # ¸ø“¿´ÃŹ·”°²ÅÅÈÎÎñ£¬ÈÃËü´ø×Å“±£ïڔȫ·½Î»ÎÞËÀ½Ç¶¢×ÅÄ¿±ê·¾¶ÏµÄËùÓж¯¾²¡£

    observer.start()  # “¿´ÃŹ·”ÉϸÚÀ²£¡

    try:

        while True:  # Ö÷½ÇÔÚ´ËÏÝÈëËÀÑ­»·£¬Ã¿¹ýÒ»Ã붼Ҫ´ò¸öíï¶ù£¨sleep£©¡£

            time.sleep(1)

    except KeyboardInterrupt:  # ΨһÄÜÈÃÖ÷½Ç´ÓÃÎÖÐÐÑÀ´µÄ£¬Ö»ÓйÛÖÚ°´ÏÂÍ˳ö¼üÕâÕГʨºð¹¦”¡£

        observer.stop()  # ½Óµ½Ðźţ¬“¿´ÃŹ·”ֹͣѲÂß¡£

    observer.join()  # ×îºó£¬“¿´ÃŹ·”Íê³ÉʹÃü£¬ÓëÖ÷½ÇһͬÍ˳¡¡£

 

if __name__ == "__main__":  # µ±Õû²¿¾çÓÉ×Ô¼º¶ÀÁ¢Ñݳöʱ£¬Æô¶¯¾çÇéÖ÷Ïߣ¡

    main()  # ¿ªÊ¼Ðж¯°É£¡

 

eChat_20240318161914


ÏÂÃæÊDz»´øÎÒ½²½âµÄ´¿¾»°æ£º

import os

import sys

import time

from watchdog.observers import Observer

from watchdog.events import FileSystemEventHandler

 

class ModelSecurityHandler(FileSystemEventHandler):

    def on_modified(self, event):

        if event.src_path.endswith('.model'):

            print(f"¼ì²âµ½Ä£ÐÍÎļþ {event.src_path} ±»Ð޸ģ¬ÕýÔÚ»Ö¸´...")

            restore_model(event.src_path)

 

def restore_model(model_path):

    # ÔÚÕâÀïÌí¼Ó»Ö¸´Ä£Ð͵ĴúÂë

    pass

 

def main():

    path = sys.argv[1] if len(sys.argv) > 1 else '.'

    event_handler = ModelSecurityHandler()

    observer = Observer()

    observer.schedule(event_handler, path, recursive=True)

    observer.start()

    try:

        while True:

            time.sleep(1)

    except KeyboardInterrupt:

        observer.stop()

    observer.join()

 

if __name__ == "__main__":

    main()

eChat_20240318161932

 

Õâ¸ö´úÂëʹÓÃÁËwatchdog¿âÀ´¼à¿ØÄ£ÐÍÎļþµÄ±ä»¯¡£µ±¼ì²âµ½Ä£ÐÍÎļþ±»ÐÞ¸Äʱ£¬»áµ÷ÓÃrestore_modelº¯ÊýÀ´»Ö¸´Ä£ÐÍ¡£Ê¹ÓÃʱÐèÒªÔÚrestore_modelº¯ÊýÖÐÌí¼Óʵ¼ÊµÄ»Ö¸´Ä£Ð͵ĴúÂë¡£

ÔÚÉè¼Æ·ÀÖ¹AI´óÄ£Ðͱ»ºÚ¿Í²¡¶¾ÈëÇֵĴúÂëʱ£¬ÐèÒª¿¼ÂǸü¸´ÔӵļÓÃܺͽâÃÜËã·¨ÒÔ¼°Ä£Ð͵ÄʵÏÖ¡£ÏÂÃæÎÒ½«Ð´Ò»¸ö¸ü¸´ÔӵķÀ»¤´ëÊ©£º

import os          

import sys         

import hashlib      # ÕâλÊÇ“ÃÜÂëѧ´óʦhashlib”£¬×¨¹¥Êý¾ÝÖ¸ÎƼø¶¨£¬ÈÃÄãµÄÊý¾Ý¶ÀÒ»ÎÞ¶þ¡£

import cryptography  # “cryptography”¿ÉÊÇ°²È«½çµÄÖØÁ¿¼¶ÈËÎ¸ºÔð¸÷Àà¼ÓÃܽâÃÜ´óÏ·¡£

 

from cryptography.fernet import Fernet  # ÒýÈëFernetÕâλÉñÃØÌع¤£¬ËûÕƹÜן߼¶¼ÓÃܼ¼Êõ£¬ÈÃÊý¾Ý±äÉí³ÉΪÃØÃÜÇ鱨¡£

 

# ÎÒÃÇÏȶ¨Òå¸ö¼òµ¥¼ÓÃÜ·½·¨£¨Æäʵ¾ÍÊǸöÍæЦ£¬Êµ¼ÊÖеÃÓøüÀ÷º¦µÄÕÐÊý£©

def simple_encrypt(data):

    key = Fernet.generate_key()  # Ìع¤FernetÉú³ÉÒ»°Ñ¶ÀÃÅÃÜÔ¿

    cipher_suite = Fernet(key)   # ÄÃ×ÅÃÜÔ¿Æô¶¯¼ÓÃÜÉ豸

    cipher_text = cipher_suite.encrypt(data.encode())  # °ÑÃ÷ÎÄÊý¾Ý±ä³É¼ÓÃܺóµÄĦ˹ÃÜÂë

    return cipher_text  # ·µ»ØÕâ´®ÉñÃØ´úÂë

 

# È»ºó¶¨ÒåÒ»¸ö¼òµ¥µÄ½âÃÜ·½·¨£¨Í¬ÑùÖ»ÊÇʾÀý£¬ÕæʵÇé¿ö»á¸´Ôӵöࣩ

def simple_decrypt(cipher_text):

    key = Fernet.generate_key()  # ÓÖÉú³ÉÒ»°ÑÐÂÃÜÔ¿£¨ÕâÀïÑÝʾ²»¶Ô£¬Êµ¼ÊҪʹÓÃͬһ°ÑÃÜÔ¿£©

    cipher_suite = Fernet(key)   # ÔÙ´ÎÆô¶¯½âÃÜÉ豸

    plain_text = cipher_suite.decrypt(cipher_text)  # ½«¼ÓÃÜÐÅÏ¢Æƽâ»ØԭʼÄÚÈÝ

    return plain_text  # ԭʼÊý¾ÝÓÖ»ØÀ´À²£¡

 

--¾çÇé¸ß³±--

 

# ½ÓÏÂÀ´£¬Ö÷½Ç³ö³¡£¡AIÄ£ÐÍ´óÏÀµÄÔ´ÎļþÃûÊÇ'ai_model.bin'

model_file = 'ai_model.bin'

with open(model_file, 'rb') as f:  # ´ò¿ª±¦Ïä¶ÁÈ¡Ä£ÐÍÃؼ®

    model_data = f.read()  # °ÑÃؼ®ÄÚÈÝÈ«Å̽ÓÊÕ

 

# ¶ÔÃؼ®½øÐмÓÃÜ£¬²ØÆðÀ´

encrypted_model_data = simple_encrypt(model_data)

 

# дÈë¼ÓÃܺóµÄÃؼ®¸±±¾¡¶¼ÓÃÜ°æai_model.bin¡·

encrypted_model_file = 'encrypted_ai_model.bin'

with open(encrypted_model_file, 'wb') as f:

    f.write(encrypted_model_data)  # Ãؼ®´æºÃ£¬Í×Í×µÄ

 

--½øÈëÈÕ³£»·½Ú--

 

# ¼ÓÔØÃؼ®Ç°ÏȽâÃÜ£¬¾ÍÏñÿ´ÎÁ·¹¦Ç°ÏȽâËøÃؼ®Ò»Ñù

def load_ai_model():

    global model_data  # È«Çò¹«¸æ£ºÎÒÒªÓõ½Õâ¸ö±äÁ¿ÁË

 

    with open(encrypted_model_file, 'rb') as f:  # ´ò¿ª¼ÓÃÜÃؼ®

        cipher_text = f.read()  # °Ñ¼ÓÃÜÄÚÈÝÄùýÀ´

 

    model_data = simple_decrypt(cipher_text)  # ½âÃÜ£¬»¹Ô­³ÉÕæ¾­

 

# ÔÚÍ˳ö³ÌÐòʱ£¬¼ÇµÃÔٴμÓÃܲ¢±£´æÃؼ®£¬·ÀÖ¹±»Íµ¿ú

def save_ai_model():

    global model_data  # ͬÑùÈ«Çò¹«¸æÒ»ÏÂ

 

    encrypted_model_data = simple_encrypt(model_data)  # ÏȼÓÃÜ

 

    with open(encrypted_model_file, 'wb') as f:

        f.write(encrypted_model_data)  # Ôٴν«¼ÓÃܺóµÄÃؼ®·â´æ

 

# ¿ªÊ¼ÐÞÁ¶£¡¼ÓÔØÃؼ®

load_ai_model()

 

# °²ÅÅÔÚ¾çÖÕʱ×Ô¶¯¼ÓÃܱ£´æÃؼ®

atexit.register(save_ai_model)

 

# ʹÓÃAI´óÏÀ¿ªÊ¼Ô¤²â£¨´Ë´¦´¿ÊôÐé¹¹£¬ÕæʵÇé¿öÇë½áºÏ¾ßÌåÄ£ÐÍÊ©Õ¹Éñͨ£©

def predict(data):

    # ÔÚÕâÀïÎÒÃÇÒѾ­ÊµÏÖÁËÒ»¸öÉñÆæµÄÉî¶ÈѧϰÍÆÀí¹ý³Ì...

 

# Á·Ï°Ò»´ÎÔ¤²â¹¦·ò

predict(model_data)

eChat_20240318161942

 

·ÀÖ¹ AI ´óÄ£Ðͱ»ºÚ¿Í²¡¶¾ÈëÇÖ¿ØÖÆÐèÒª×ۺϿ¼ÂǶà¸ö·½ÃæµÄ°²È«´ëÊ©¡£ÓÉÓÚ¾ßÌåµÄʵÏÖ»áÒòÄ£Ð͵ÄÌص㣬ӦÓó¡¾°ºÍ°²È«ÐèÇó»áÓÐËù²»Í¬¡£ÎÒ»á°ïÖú¿Í»§¹¹½¨°²È«µÄ AI ´óÄ£ÐÍ¡£ÉÏÃæµÄÖ»ÊÇһЩ»ù±¾µÄ°²È«´ëÊ©£¬ÔÚʵ¼ÊÖÐÎÒ¿ÉÒÔÀûÓÃeFPGAоƬ¶ÔÉÏÊöµÄ¹¦ÄܽøÐмÓËÙ£¬ÏÂÃæÎÒ±àдһ¸ö¼ÓËÙ´úÂ룺

// ÕâÊÇÒ»¸öÓÃFPGA´î½¨µÄAI´óÄ£ÐÍ°²È«·À»¤ÏµÍ³

module ai_model_protection(

    input logic clk,          // ºÃ±ÈÊÇAIÐÄÔàµÄÂö²«Ê±ÖÓ£¬±£Ö¤Ò»Çж¯×÷ÓнÚ×àµØÌø¶¯

    input logic rst_n,        // ¸´Î»¿ª¹Ø£¬Ò»°´¾Í»Ø¹é³ö³§ÉèÖã¨àÅ£¬ÆäʵÊÇ“Ò»¼ü»¹Ô­”£©

    input logic [31:0] data_in,  // Êý¾ÝÈë¿Ú£¬ÏëÏó³É´ÓÍâ½çÊäÈëµÄСÃØÃÜ

    output logic [31:0] data_out  // Êý¾Ý³ö¿Ú£¬´¦ÀíºóµÄ½á¹ûÏñ±äħÊõÒ»ÑùÊä³ö

 

);

 

// ÎÒÃǶ¨ÒåÒ»¸ö³¬¼¶¼òÒ×¼ÓÃÜËã·¨£¬Æäʵ¾ÍÊǼӸö°µºÅ£¨1234567890£©¶øÒÑ

function automatic logic [31:0] simple_encrypt;

    input logic [31:0] plain_text;   // Ã÷ÎÄÊý¾Ý£¬¾ÍÏñû´©Âí¼×µÄÐÅÏ¢

    logic [31:0] cipher_text;       // ÃÜÎÄÊý¾Ý£¬´©ÉÏÂí¼×ºóËüÒ¡ÉíÒ»±ä³ÉÁËÃÕÍÅ

 

    // ¼ÓÃܹý³Ì¾ÍÊǸøÃ÷ÎļÓÉÏÎÒÃǵݵºÅ

    cipher_text = plain_text + 1234567890;

 

    // È»ºó°Ñ´©ÁËÂí¼×µÄÊý¾Ý·µ»Ø³öÈ¥

    simple_encrypt = cipher_text;

endfunction

 

// ½âÃÜËã·¨¸ü¼òµ¥£¬ÍѵôÂí¼×¾ÍºÃÁË£¬Ò²¾ÍÊǼõÈ¥ÄǸö°µºÅ

function automatic logic [31:0] simple_decrypt;

    input logic [31:0] cipher_text;  // Äõ½´©Âí¼×µÄÊý¾Ý

    logic [31:0] plain_text;         // ÍÑÏÂÂí¼×ºóµÄÔ­ÑùÊý¾Ý

 

    // ½âÃܹý³Ì¾ÍÊÇ°ÑÂí¼×£¨°µºÅ£©È¥µô

    plain_text = cipher_text - 1234567890;

 

    // ԭʼÊý¾ÝÏÖÉí£¡È»ºóË͸øÐèÒªµÄÈË

    simple_decrypt = plain_text;

endfunction

 

// ½ÓÏÂÀ´ÊDzØ׿ÓÃܺóÄ£ÐÍÊý¾ÝµÄÃØÃֿܲâ

logic [31:0] encrypted_model_data;

 

// ÕâÀïÒªÉè¼ÆÒ»¸öÓÃÓÚAI´óÄ£ÐÍÔËËãµÄÓ²¼þÄ£¿é

// µ±È»£¬ÕâÀïÖ»ÊǾٸöÀõ×Ó£¬ÕæʵÇé¿ö¿Ï¶¨µÃ¸ù¾ÝÄ£ÐÍÁ¿Ìå²ÃÒÂ

module ai_model(

    input logic clk,

    input logic rst_n,

    input logic [31:0] data_in,

    output logic [31:0] data_out

);

 

// ÔÚÕâÀï²åÈ븴ÔÓµÄÓ²¼þ¼ÓËÙÂß¼­£¬±ÈÈç¾í»ýÉñ¾­ÍøÂçµÄµç·ʵÏÖ

// ±ÈÈç˵ÎÒÃÇÒѾ­ÓÐһ̨ÉñÆæµÄAIËãÁ¦ºÚ¿Æ¼¼ÔÚĬĬ¹¤×÷...

 

endmodule

 

// ÎÒÃÇÕÙ»½³öÕâ¸öÉñÃصÄAIÄ£ÐÍÓ²¼þʵÀý

ai_model ai_model_inst(

    .clk(clk),                 // ¸øËü½ÓÉÏÐÄÌøʱÖÓ

    .rst_n(rst_n),             // Á¬½Ó¸´Î»Ðźţ¬Ëæʱ׼±¸ÖØÆô½­ºþ

    .data_in(encrypted_model_data),  // ÊäÈëµÄÊǼÓÃܹýµÄÊý¾Ý

    .data_out(data_out)         // Êä³ö½âÃܺóµÄ½á¹û

);

 

// ¶ÔÊäÈëÊý¾Ý½øÐмÓÃÜ´ò°ç£¬ÈÃËü±ä³É"ÃÜÂë"ÐÎʽ

encrypted_model_data = simple_encrypt(data_in);

 

// ÏÂÃæÊǾö¶¨ºÎʱ½âÃܵľçÇé¸ß³±²¿·Ö

always @(posedge clk or negedge rst_n) begin

    if (!rst_n) begin

        // µ±¸´Î»ÐźÅÓÐЧ£¨µÍµçƽ£©£¬ÉÏÑÝÒ»¼ü½âÂë´óÏ·

        data_out <= simple_decrypt(encrypted_model_data);

    end else begin

        // ƽʱÂֱ½ÓÊä³ö¼ÓÃܺóµÄÊý¾Ý£¨±£³ÖÉñÃظУ©

        data_out <= encrypted_model_data;

    end

end

 

// ½áÊøÕⳡFPGAÓëAI´óÄ£Ð͵ÄÆæÃîºÏ×÷Ö®ÂÃ

endmodule

 

WeChat_20240318141505

 

AI´óÄ£ÐÍ°²È«·½Ã滹ÐèÒª¿¼Âǵ½ÒÔϼ¸¸ö·½Ãæ²ÅÄÜ·ÀÖ¹AI´óÄ£Ðͱ»ºÚ¿Í²¡¶¾ÈëÇÖ¿ØÖÆ£º

1. Ó²¼þ°²È«Ä£¿é£¨HSM£©¼¯³É

  • FPGAÓëHSMµÄÁ¬½Ó£ºÔÚFPGAÉè¼ÆÖм¯³ÉÓ²¼þ°²È«Ä£¿é£¨HSM£©£¬¸ÃÄ£¿é¿ÉÒÔÌṩ°²È«µÄ´æ´¢¡¢¼ÓÃܺͽâÃÜ·þÎñ¡£
  • °²È«ÃÜÔ¿¹ÜÀí£ºÊ¹ÓÃHSMÉú³É¡¢´æ´¢ºÍ¹ÜÀíÓÃÓÚ±£»¤AIÄ£Ð͵ļÓÃÜÃÜÔ¿¡£

2. AIÄ£Ð͵ݲȫ·â×°

  • Ä£ÐͼÓÃÜ£ºÔÚFPGAÉϲ¿ÊðAIÄ£ÐÍ֮ǰ£¬Ê¹ÓÃHSMÖеÄÃÜÔ¿¶ÔÄ£ÐͽøÐмÓÃÜ¡£
  • ½âÃÜÓë¼ÓÔØ£ºÔÚFPGAÔËÐÐʱ£¬Ê¹ÓÃHSM½âÃÜÄ£ÐÍ£¬²¢½«Æä¼ÓÔص½FPGAµÄרÓÃÄÚ´æÇøÓòÖС£

3. Í¨ÐŽӿڵݲȫ·À»¤

  • ¼ÓÃÜͨÐÅ£ºÊ¹ÓÃTLS/SSL»òÆäËû°²È«Ð­Òé¶ÔFPGAÓëÍⲿÉ豸»òÍøÂçµÄͨÐŽøÐмÓÃÜ¡£
  • ·ÃÎÊ¿ØÖÆ£ºÊµÊ©ÑϸñµÄ·ÃÎÊ¿ØÖƲßÂÔ£¬ÏÞÖƶÔFPGAµÄ·ÃÎÊȨÏÞ¡£

4. ÊµÊ±¼à¿ØÓë¼ì²â

  • ÈëÇÖ¼ì²âϵͳ£ºÔÚFPGAÉÏʵÏÖÇáÁ¿¼¶µÄÈëÇÖ¼ì²âϵͳ£¬ÓÃÓÚ¼ì²âDZÔڵĹ¥»÷ÐÐΪ¡£
  • ÈÕÖ¾¼Ç¼£º¼Ç¼ËùÓйؼü²Ù×÷ºÍʼþ£¬ÒÔ±ãºóÐø·ÖÎöºÍÉó¼Æ¡£

5. ¹Ì¼þ¸üÐÂÓë²¹¶¡¹ÜÀí

  • °²È«¸üУºÍ¨¹ý°²È«µÄͨµÀ£¨Èç¼ÓÃܵÄOTA¸üУ©ÏòFPGAÍÆË͹̼þ¸üкͲ¹¶¡¡£
  • ÑéÖ¤ÓëÍêÕûÐÔ¼ì²é£ºÔÚ¸üйý³ÌÖÐÑéÖ¤¹Ì¼þµÄÍêÕûÐÔºÍÀ´Ô´£¬·ÀÖ¹¶ñÒâÐ޸ġ£

6. ÎïÀí·À»¤

  • ÎïÀí·ÃÎÊ¿ØÖÆ£ºÏÞÖƶÔFPGAÓ²¼þµÄÎïÀí·ÃÎÊ£¬·ÀÖ¹Ö±½Ó¹¥»÷»ò´Û¸Ä¡£
  • ζȼà¿Ø£º¼à¿ØFPGAµÄζȣ¬·ÀÖ¹Òò¹ýÈȵ¼ÖµÄÐÔÄÜϽµ»ò°²È«Â©¶´¡£

7. ´úÂ뿪·¢ÓëÉó²é

  • °²È«±àÂëʵ¼ù£º×ñÑ­°²È«±àÂë×î¼Ñʵ¼ù£¬¼õÉÙÈí¼þ²ãÃæµÄ©¶´¡£
  • ´úÂëÉó²é£º¶¨ÆÚ½øÐдúÂëÉó²éºÍ°²È«Â©¶´É¨Ã裬ȷ±£Ã»Óа²È«Òþ»¼¡£  

×¢ÒâÊÂÏ

  • °²È«È¨ºâ£ºÔÚÉè¼ÆʱÐèÒª¿¼ÂÇ°²È«ÓëÐÔÄܵÄȨºâ£¬±ÜÃâ¹ý¶È·À»¤µ¼ÖÂÐÔÄÜϽµ¡£
  • ³ÖÐø¸üУºËæ×Å°²È«ÍþвµÄ²»¶ÏÑݱ䣬ÐèÒª¶¨ÆÚ¸üкÍÉý¼¶°²È«·À»¤´ëÊ©¡£
  • ¶à²ã´Î·À»¤£º²ÉÓöà²ã´ÎµÄ°²È«·À»¤²ßÂÔ£¬ÒÔÌá¸ßÕûÌ尲ȫÐÔ¡£

½ñÌìÏÈдµ½ÕâÀï...

WeChat_20240318141521

 

½ÓÉÏÈýƪ£º

¡¾ÐÇǶµç×ÓXQ138F-EVM¿ª·¢°åÌåÑé¡¿£¨Ô­´´£©7.Ó²¼þ¼ÓËÙSoraÎÄÉúÊÓƵԴ´úÂë https://bbs.eeworld.com.cn/thread-1272724-1-1.html

ÉÏÊÖSTM32L432 Nucleo-32 (ËÄ)I2C½Ó¿ÚÉèÖÃ https://bbs.eeworld.com.cn/thread-1258190-1-1.html

ÉÏÊÖSTM32L432 Nucleo-32 (Èý)ADC https://bbs.eeworld.com.cn/thread-1258153-1-1.html

 
Éϼ¸Æª£º

 

ÉÏÊÖSTM32L432 Nucleo-32 (Ò») https://bbs.eeworld.com.cn/thread-1257417-1-1.html

 ÉÏÊÖSTM32L432 Nucleo-32 (¶þ) https://bbs.eeworld.com.cn/thread-1258091-1-1.html

 

 

 
±¾ÈËÔÚ±¾ÂÛ̳ÄÚµÄÊÔ¶Á¾­Ñé :

·ÀÖ¹ºÚ¿Í²¡¶¾ÈëÇÖÖÇÄÜÆû³µÔ¶³Ì¿ª³µËø³µ2¡¾»»µÀÈü³µ£ºÐÂÄÜÔ´Æû³µµÄÖйúµÀ· | ÔĶÁ... https://bbs.eeworld.com.cn/thread-1274682-1-1.html

 

¡¶Á˲»ÆðµÄоƬ¡·ÔĶÁ»î¶¯1¶ÁÐÂÊé https://bbs.eeworld.com.cn/thread-1247499-1-1.html

¡¶Á˲»ÆðµÄоƬ¡·ÔĶÁ»î¶¯2µÚ¾ÅÕ£¨Ò»£© https://bbs.eeworld.com.cn/thread-1249129-1-1.html

¡¶Á˲»ÆðµÄоƬ¡·ÔĶÁ»î¶¯3µÚ°ËÕÂÒ»eew_V04Cyi https://bbs.eeworld.com.cn/thread-1251085-1-1.html

¡¶Á˲»ÆðµÄоƬ¡·ÔĶÁ»î¶¯4µÚ°ËÕ£¨¶þ£© https://bbs.eeworld.com.cn/thread-1251095-1-1.html

¡¶Á˲»ÆðµÄоƬ¡·ÔĶÁ»î¶¯5ÐÂÐͲÄÁÏ https://bbs.eeworld.com.cn/thread-1257305-1-1.html

¡¶Á˲»ÆðµÄоƬ¡·ÔĶÁ»î¶¯6³ÉΪоƬ¹¤³Ìʦ https://bbs.eeworld.com.cn/thread-1257436-1-1.html

¡¶Á˲»ÆðµÄоƬ¡·ÔĶÁ»î¶¯7оƬÉè¼Æ¹¤³ÌʦÌØÖÊ https://bbs.eeworld.com.cn/thread-1257438-1-1.html

¡¶Á˲»ÆðµÄоƬ¡·ÔĶÁ»î¶¯8µÚÒ»Õ https://bbs.eeworld.com.cn/thread-1258064-1-1.html

¡¶Á˲»ÆðµÄоƬ¡·ÔĶÁ»î¶¯9µÚ¶þÕ https://bbs.eeworld.com.cn/thread-1258076-1-1.html

¡¶Á˲»ÆðµÄоƬ¡·ÔĶÁ»î¶¯10µÚÈýÕ https://bbs.eeworld.com.cn/thread-1258119-1-1.html

¡¶Á˲»ÆðµÄоƬ¡·ÔĶÁ»î¶¯11µÚËÄÕ https://bbs.eeworld.com.cn/thread-1258193-1-1.html

¡¶Á˲»ÆðµÄоƬ¡·ÔĶÁ»î¶¯12µÚÎåÕÂÉ÷ÖÕÈçʼ——оƬ·â×°Óë²âÊÔ https://bbs.eeworld.com.cn/thread-1263743-1-1.html

 

 
Ï£ÍûÕâЩÐĵÃÌå»áÄܶÔÄúÓÐËù°ïÖú£¡

лл£¡

»¹Ã»³Ô·¹ÖÐ
2024Äê3ÔÂ18ÈÕ

 

 

±¾ÎÄÀ´×ÔÂÛ̳£¬µã»÷²é¿´ÍêÕûÌû×ÓÄÚÈÝ¡£

ÆÀÂÛ (0 ¸öÆÀÂÛ)

facelist doodle Í¿Ñ»°å

ÄúÐèÒªµÇ¼ºó²Å¿ÉÒÔÆÀÂÛ µÇ¼ | ×¢²á

ÈÈÃÅÎÄÕÂ